run method

  1. @override
void run()
override

Runs this command.

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

Implementation

@override
void run() async {
  await initializeOnvif();

  final users = <String>[];

  final hasFile = argResults?.options.contains('users-file') ?? false;

  final hasUser = argResults?.options.contains('username') ?? false;

  if (hasFile) {
    final userFile = File(argResults!['users-file']);

    if (!userFile.existsSync()) {
      throw UsageException(
          '${argResults!['users-file']} - file not found', usage);
    }

    users.addAll((loadYaml(File(argResults!['users-file']).readAsStringSync())
            as YamlList)
        .map((userJson) => userJson.toString()));
  }

  if (hasUser) {
    users.add(argResults!['username']);
  }

  try {
    await deviceManagement.deleteUsers(users);
  } on DioException catch (err) {
    throw UsageException('API usage error:', err.usage);
  }
}