selectShouldOverwrite method

bool selectShouldOverwrite(
  1. String projectDir,
  2. String projectName
)

Prompt user if they want to overwrite existing files

Implementation

bool selectShouldOverwrite(String projectDir, String projectName) {
  final yes = 'Yes';
  final no = 'No *';

  final fullPath = p.join(projectDir, projectName);
  final directoryExists = Directory(fullPath).existsSync();

  final text =
      'Directory `$projectName` already exists. Overwrite?'.cDarkOrange;

  final formattedPrompt = '\r${text.prefix('⚠️  ')}'.replaceAll('\n', '');

  if (directoryExists) {
    final result = selectOne(
      formattedPrompt,
      choices: [yes, no],
      display: (p0) => p0,
      defaultValue: no,
    );

    if (result == yes) {
      final String confirmation = confirmOverwrite(projectName);
      final isValid = confirmation == projectName;

      if (!isValid) {
        throw OverwriteConfirmationFailedException();
      }

      return isValid;
    }
  }

  return false;
}