run method Null safety

  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 updateCheckProgress = _logger.progress('Checking for updates');
  late final String latestVersion;
  try {
    latestVersion = await _pubUpdater.getLatestVersion(_packageName);
  } catch (error) {
    updateCheckProgress.fail();
    _logger.err('$error');
    return ExitCode.software.code;
  }
  updateCheckProgress.complete('Checked for updates');

  final isUpToDate = packageVersion == latestVersion;
  if (isUpToDate) {
    _logger.info(
      'Automatic Version Upgrader CLI is already at the latest version.',
    );
    return ExitCode.success.code;
  }

  final updateProgress = _logger.progress('Updating to $latestVersion');
  try {
    await _pubUpdater.update(packageName: _packageName);
  } catch (error) {
    updateProgress.fail();
    _logger.err('$error');
    return ExitCode.software.code;
  }
  updateProgress.complete('Updated to $latestVersion');

  return ExitCode.success.code;
}