run method Null safety
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;
}