generateProject function
Generates a complete Karna MVC project.
Implementation
Future<void> generateProject({
required String projectName,
required String org,
}) async {
// Step 1: flutter create
Logger.step('Creating Flutter project...');
await runOrFail('flutter', ['create', '--org', org, projectName]);
if (!Directory(projectName).existsSync()) {
Logger.error('flutter create failed.');
exit(1);
}
Logger.success('Flutter project created');
// Step 2: Add dependencies
Logger.step('Adding dependencies...');
await runOrFail(
'flutter',
[
'pub',
'add',
'provider',
'http',
'shared_preferences',
'hive_ce',
'hive_ce_flutter'
],
workingDirectory: projectName,
);
Logger.success('Dependencies added');
// Step 3: Scaffold architecture
Logger.step('Scaffolding Karna MVC architecture...');
await _scaffoldCore(projectName);
Logger.success('Core architecture scaffolded');
// Step 4: Clean up default files
await _cleanup(projectName);
Logger.newLine();
Logger.info("✨ Karna MVC project '$projectName' created successfully!");
Logger.newLine();
Logger.info('📝 Next steps:');
Logger.info(' cd $projectName');
Logger.info(' karna feature auth');
Logger.info(
' flutter run --dart-define=BASE_URL=http://localhost:8080/api');
}