run method
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;
});