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 path = argResults!['path'] as String;
  final filePath = argResults!['file'] as String?;
  final recursive = argResults!['recursive'] as bool;
  final apply = argResults!['apply'] as bool;
  final verbose = argResults!['verbose'] as bool;

  final result = OperationResult();

  try {
    if (filePath != null) {
      return await _batchDelete(
        filePath: filePath,
        basePath: path,
        apply: apply,
        verbose: verbose,
        result: result,
      );
    }

    final pathValidation = PathValidator.validatePath(path);

    if (pathValidation.isDocument) {
      return await _deleteSingleDocument(
        path: path,
        apply: apply,
        verbose: verbose,
        result: result,
      );
    } else {
      if (!recursive) {
        throw ValidationException(
          'Path is a collection. Use --recursive to delete all documents in collection',
        );
      }

      return await _deleteCollection(
        collectionPath: path,
        apply: apply,
        verbose: verbose,
        result: result,
      );
    }
  } on Exception catch (e) {
    stderr.writeln('Error: $e');
    return 2;
  }
}