run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<void> run() async {
logger.info('Running preflight checks...');
final checks = <String, bool>{
'Git': await _isInstalled('git', ['--version']),
'GitHub CLI (gh)': await _isInstalled('gh', ['--version']),
'GitHub Auth': await _checkGhAuth(),
'Dart SDK': await _isInstalled('dart', ['--version']),
'Flutter SDK': await _isInstalled('flutter', ['--version']),
'Node.js': await _isInstalled('node', ['--version']),
'NPM': await _isInstalled('npm', ['--version']),
'Ruby': await _isInstalled('ruby', ['--version']),
'Android SDK (ANDROID_HOME)': _checkAndroidHome(),
'Android SDK (adb)': await _isInstalled('adb', ['version']),
'Xcode': await _checkXcode(),
};
for (final entry in checks.entries) {
if (entry.value) {
logger.success('${entry.key} is installed ✅');
} else {
logger.err('${entry.key} is missing ❌');
}
}
final allOk = checks.values.every((v) => v);
if (allOk) {
logger.info('All checks passed. Environment is ready.');
} else {
logger.err(
'Some checks failed. Fix the issues above before running commands.',
);
exit(1);
}
}