run method
Unified execution entrypoint, implemented by commands.
Implementation
@override
Future<int> run(
CliContext context,
) async {
final inv = context.invocation;
final logger = context.logger;
final prompter = context.prompter;
if (inv.positionals.isEmpty) {
logger.log('Usage: mono ungroup <group_name>', level: 'error');
return 2;
}
final groupName = inv.positionals.first.trim();
if (groupName.isEmpty || groupName.startsWith(':')) {
logger.log('Invalid group name: "$groupName"', level: 'error');
return 2;
}
final loaded = await context.workspaceConfig.loadRootConfig();
final store = await FileGroupStore.create(
pathService: context.pathService,
loadedRootConfig: loaded,
);
if (!await store.exists(groupName)) {
logger.log('Group "$groupName" does not exist.', level: 'error');
return 2;
}
final ok = await prompter.confirm(
'Remove group "$groupName"? This cannot be undone.',
defaultValue: false,
);
if (!ok) {
logger.log('Aborted.', level: 'error');
return 1;
}
await store.deleteGroup(groupName);
logger.log('Group "$groupName" removed.');
return 0;
}