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 {
  final overwrite = argResults!['overwrite-credentials'];

  final hasCred = overwrite && defaultCredentialsFile.existsSync();

  final httpClient = HttpClient();

  final credentials = <String, dynamic>{};

  ClientId? oAuthClientId;

  if (overwrite && accessCredentialsFile.existsSync()) {
    accessCredentialsFile.deleteSync();
  }

  if (!hasCred) {
    print('Enter clientId:');

    credentials['identifier'] =
        stdin.readLineSync(encoding: Util.defaultEncoding());

    if (credentials['identifier'] == null) {
      throw Exception('Client Identifier not supplied');
    }

    print('Enter clientSecret:');

    credentials['secret'] =
        stdin.readLineSync(encoding: Util.defaultEncoding());

    oAuthClientId =
        ClientId(credentials['identifier'], credentials['secret']);

    defaultCredentialsFile.createSync(recursive: true);

    defaultCredentialsFile.writeAsStringSync(json.encode(credentials));
  }

  final accessControl = OAuthAccessControl(oAuthClientId);

  await accessControl.init();

  httpClient.close();

  print('Authorization completed.');
}