run method
Implementation
void run(List<String> args) {
if (args.contains('--help') || args.contains('-h')) {
_printHelp();
return;
}
if (args.isEmpty) {
Console.error('Please specify a template name.');
Console.info('\nAvailable templates:');
for (final t in TemplateRegistry.all) {
Console.info(' - ${t.name}');
}
Console.info('\nUsage:');
Console.command(' dart run raptrai add <template-name>');
exit(1);
}
final templateName = args[0];
final template = TemplateRegistry.find(templateName);
if (template == null) {
Console.error('Template "$templateName" not found.');
Console.info('\nAvailable templates:');
for (final t in TemplateRegistry.all) {
Console.info(' - ${t.name}');
}
exit(1);
}
// Parse options
String outputPath = 'lib';
bool force = false;
for (int i = 1; i < args.length; i++) {
if (args[i] == '--path' && i + 1 < args.length) {
outputPath = args[i + 1];
i++;
} else if (args[i] == '--force' || args[i] == '-f') {
force = true;
}
}
Console.info('Adding ${template.name} template...\n');
// Check if we're in a Flutter project
if (!File('pubspec.yaml').existsSync()) {
Console.error('No pubspec.yaml found. Are you in a Flutter project?');
Console.info('Run this command from your Flutter project root.');
exit(1);
}
// Write template files
final writer = FileWriter(basePath: outputPath, force: force);
try {
for (final file in template.files) {
writer.write(file.path, file.content);
Console.fileCreated(file.path);
}
} catch (e) {
Console.error('Failed to write files: $e');
exit(1);
}
Console.info('');
Console.success('${template.name} template added successfully!\n');
if (template.postInstall != null) {
Console.info('Next steps:');
Console.info(template.postInstall!);
}
}