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() async {
  final options = InitOptions.fromArgResults(
    argResults!,
    globalResults: globalResults,
  );
  final targetDirectory = Directory(
    options.globalOptions.directory ?? Directory.current.path,
  ).absolute;

  final pubspecFile = File(path.join(targetDirectory.path, 'pubspec.yaml'));
  if (!pubspecFile.existsSync()) {
    stderr.writeln('pubspec.yaml not found in ${targetDirectory.path}');
    return 1;
  }

  final configFile = File(path.join(targetDirectory.path, kConfigFileName));
  if (configFile.existsSync() && !options.force) {
    stderr.writeln(
      '$kConfigFileName already exists in ${targetDirectory.path}. '
      'Re-run with --force to overwrite it.',
    );
    return 1;
  }

  await configFile.writeAsString(_renderConfig(options));
  stdout.writeln('Created ${configFile.path}');
  return 0;
}