execute method

  1. @override
Future<void> execute(
  1. CardinalContext context
)

Implementation

@override
Future<void> execute(CardinalContext context) async {
  final name = context.argument<String>('name');
  final directory = Directory(name!);

  if (directory.existsSync()) {
    logger.err('Directory "$name" already exists.');
    logger.info(
      'Please choose a different name or delete the existing directory to proceed.',
    );
    exit(1);
  }

  // -------------------------------------------------------------
  // TASK 1: Creating files
  final createProgress = logger.progress('Generating base project structure');
  await createProject(name, createProgress);
  await scaffoldProject(name);
  createProgress.complete('Base project structure generated.');

  // -------------------------------------------------------------
  // TASK 2: Installation of dependencies
  final installProgress = logger.progress(
    'Installing required dependencies (dart pub get)',
  );
  await installDependencies(name, installProgress);
  installProgress.complete('All dependencies installed.');

  logger.success('Project "$name" created successfully!');
}