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 {
final path =
argResults?.rest.firstOrNull ?? p.join('config', 'config.json');
final progress = _logger.progress('Initializing global config...');
try {
final configFile = File(path);
if (configFile.existsSync()) {
progress.fail('Global config already exists: ${configFile.path}');
return;
}
final configDir = configFile.parent;
if (!configDir.existsSync()) {
configDir.createSync(recursive: true);
}
final defaultConfig = {
'\$schema': '../clean_gen_global_schema.json',
'imports': {
'data_state': 'package:core/core.dart',
'use_case': 'package:core/core.dart',
'base_repository': 'package:core/core.dart',
'base_response': 'package:core/resources/base_response.dart',
'locator': 'package:core/di/locator.dart',
},
'config': {
'fetcher_import': '../../../../core/utils/fetcher.dart',
'locator_name': 'locator',
},
};
await configFile.writeAsString(
const JsonEncoder.withIndent(' ').convert(defaultConfig),
);
progress.complete('Global config initialized: ${configFile.path}');
} catch (e) {
progress.fail('Failed to initialize: $e');
rethrow;
}
}