run method

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

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 rest = argResults!.rest;
  if (rest.length < 2) {
    throw UsageException('Expected: rekeens generate <type> <name>', usage);
  }

  final type = rest[0];
  final force = argResults!['force'] as bool;
  final dryRun = argResults!['dry-run'] as bool;
  final withTests = argResults!['tests'] as bool;
  final hooksEnabled = argResults!['hooks'] as bool;

  final featureName = rest[1];
  final entityName = rest.length > 2 ? rest[2] : null;

  final hookSet = hooksEnabled
      ? ConfigLoader.loadHooks(workingDirectory: _workingDirectory)
      : const HookSet();

  final context = HookContext(
    generatorType: type,
    featureName: featureName,
    entityName: entityName,
    dryRun: dryRun,
  );

  if (hooksEnabled && hookSet.beforeGenerate.isNotEmpty) {
    await _hookRunner.runHooks(hookSet.beforeGenerate, context);
  }

  await _runGenerator(type, rest, force, dryRun, withTests);

  if (hooksEnabled && hookSet.afterGenerate.isNotEmpty) {
    await _hookRunner.runHooks(hookSet.afterGenerate, context);
  }
}