run method Null safety

  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 credFile = Util.defaultCredentialsFile;

  final hasCred =
      !argResults!['overwrite-credentials'] && credFile.existsSync();

  final httpClient = HttpClient();

  final credentials = <String, dynamic>{};

  ClientId oAuthClientId;

  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']);

    credFile.createSync(recursive: true);

    credFile.writeAsStringSync(json.encode(credentials));
  } else {
    oAuthClientId = Util.defaultClientId();
  }

  final accessControl = OAuthAccessControl(
      clientId: oAuthClientId, httpClient: IOClient(httpClient));

  await accessControl.init();

  httpClient.close();

  print('Authorization completed.');
}