createDartCli method

Future<bool> createDartCli()

Create a Dart CLI project

Implementation

Future<bool> createDartCli() async {
  if (config.template != TemplateType.arcaneCli) {
    return false;
  }

  final String projectPath = p.join(config.outputDir, config.appName);

  info('Creating Dart CLI: ${config.appName}');

  // Use dart create for CLI projects
  final List<String> args = <String>['create', '-t', 'console', projectPath];

  final ProcessResult? result = await _runner.runWithRetry(
    'dart',
    args,
    operationName: 'Dart create',
  );

  if (result == null || !result.success) {
    error('Failed to create Dart CLI');
    return false;
  }

  // dart create generates default files that we'll replace with our template
  // Delete the generated lib and bin folders to replace with template
  final Directory libDir = Directory(p.join(projectPath, 'lib'));
  final Directory binDir = Directory(p.join(projectPath, 'bin'));

  if (libDir.existsSync()) {
    await libDir.delete(recursive: true);
  }
  if (binDir.existsSync()) {
    await binDir.delete(recursive: true);
  }

  success('Dart CLI created at: $projectPath');
  return true;
}