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 == null || argResults!.rest.isEmpty) {
logger.error('No package name provided.');
logger.info('Usage: flo_cli add package <name> [--dev]');
return 64;
}
final packageName = argResults!.rest.first;
final isDev = argResults!['dev'] as bool;
try {
final dependencyEngine = locator<DependencyEngine>();
final registry = locator<PackageRegistry>();
String version = registry.getVersion(packageName) ?? 'any';
logger.info('Adding package "$packageName" (version: $version)...');
await dependencyEngine.addDependency(packageName, version, isDev: isDev);
logger.success('Successfully added package "$packageName".');
return 0;
} catch (e) {
if (e is ConflictException) {
logger.error('Dependency Conflict: ${e.message}');
} else {
logger.error('Failed to add package: $e');
}
return 1;
}
}