run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<int> run() async {
if (argResults!.rest.isEmpty) {
Logger.error('Missing project name.');
Logger.info('Usage: karna create <project_name> [--org com.example]');
return 64;
}
final projectName = argResults!.rest.first;
final org = argResults!['org'] as String;
if (!isValidSnakeCase(projectName)) {
Logger.error(
'Project name must be snake_case (lowercase letters, numbers, underscores).',
);
return 64;
}
if (Directory(projectName).existsSync()) {
Logger.error("Directory '$projectName' already exists.");
return 1;
}
Logger.info('🚀 Creating Karna MVC project: $projectName');
Logger.info(' Organization: $org');
Logger.newLine();
await generateProject(projectName: projectName, org: org);
return 0;
}