runCommand static method

Future<int> runCommand({
  1. required CliInvocation invocation,
  2. required Logger logger,
  3. required Prompter prompter,
  4. required GroupStore store,
})

Implementation

static Future<int> runCommand({
  required CliInvocation invocation,
  required Logger logger,
  required Prompter prompter,
  required GroupStore store,
}) async {
  final inv = invocation;

  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;
  }

  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;
}