run method

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

Runs this command.

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

Implementation

@override
Future<int> run() async {
  final rest = argResults!.rest;
  if (rest.isEmpty) {
    usageException('Missing <name> argument.');
  }
  final paths = ProjectPaths.locate();
  final className = Naming.pascal(rest.first);
  final file = File(
    p.join(
      paths.root,
      'lib',
      'app',
      folder,
      '${Naming.snake(className)}.dart',
    ),
  );
  if (file.existsSync() && !(argResults!['force'] as bool)) {
    stderr.writeln(
      '${p.relative(file.path, from: paths.root)} exists; pass --force.',
    );
    return 1;
  }
  final model = argResults!['model'] as String?;
  file.parent.createSync(recursive: true);
  file.writeAsStringSync(
    source(
      className,
      paths.packageName,
      model == null ? null : Naming.pascal(model),
    ),
  );
  stdout.writeln('Created ${p.relative(file.path, from: paths.root)}');
  return 0;
}