run method

  1. @override
Future<int> run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
Future<int> run() => withApp((app) async {
  final name = argResults!.rest.firstOrNull;
  if (name == null) {
    stderr.writeln('Usage: dartisan permission:create-role <name>');
    return 64;
  }
  final role = await Role.findOrCreate(name, guard: _guard(this));
  final permissions = [
    for (final permission
        in (argResults!['permissions'] as String? ?? '').split(','))
      if (permission.trim().isNotEmpty)
        await Permission.findOrCreate(
          permission.trim(),
          guard: role.guardName,
        ),
  ];
  if (permissions.isNotEmpty) {
    await role.givePermissionTo(permissions);
  }
  stdout.writeln('Role `${role.name}` (guard `${role.guardName}`) ready.');
  return 0;
});