execute method
Implementation
Future<void> execute() async {
Logger.header('Get Dependencies for Maloc Project');
// Determine target directory
final target = targetPath ?? Directory.current.path;
final targetDir = Directory(target);
if (!targetDir.existsSync()) {
Logger.error('Directory does not exist: $target');
exit(1);
}
// Check if it's a valid project
final packagesDir = Directory('${targetDir.path}/packages');
if (!packagesDir.existsSync()) {
Logger.error(
'Not a valid Maloc project. "packages" directory not found.');
Logger.info('Make sure you are in the project root directory.');
exit(1);
}
Logger.step('Getting dependencies for all packages...');
print('');
try {
var successCount = 0;
var failCount = 0;
// Get dependencies for packages
await for (var entity in packagesDir.list()) {
if (entity is Directory) {
final pubspecFile = File('${entity.path}/pubspec.yaml');
if (await pubspecFile.exists()) {
final packageName = entity.path.split(Platform.pathSeparator).last;
stdout.write(' ▸ $packageName... ');
final result = await Process.run(
'dart',
['pub', 'get'],
workingDirectory: entity.path,
runInShell: true,
);
if (result.exitCode == 0) {
print('${Logger.green}✓${Logger.reset}');
successCount++;
} else {
print('${Logger.red}✗${Logger.reset}');
if (result.stderr.toString().isNotEmpty) {
print(' ${result.stderr}');
}
failCount++;
}
}
}
}
// Get dependencies for CLI if exists
final cliDir = Directory('${targetDir.path}/cli');
final cliPubspec = File('${targetDir.path}/cli/pubspec.yaml');
if (await cliDir.exists() && await cliPubspec.exists()) {
stdout.write(' ▸ cli... ');
final result = await Process.run(
'dart',
['pub', 'get'],
workingDirectory: cliDir.path,
runInShell: true,
);
if (result.exitCode == 0) {
print('${Logger.green}✓${Logger.reset}');
successCount++;
} else {
print('${Logger.red}✗${Logger.reset}');
if (result.stderr.toString().isNotEmpty) {
print(' ${result.stderr}');
}
failCount++;
}
}
print('');
if (failCount == 0) {
Logger.success(
'All packages bootstrapped successfully! ($successCount packages)');
} else {
Logger.warning(
'Bootstrapped with errors: $successCount succeeded, $failCount failed');
exit(1);
}
} catch (e) {
Logger.error('Failed to bootstrap project: $e');
exit(1);
}
}