run method

Future<ExitCode> run()

Implementation

Future<ExitCode> run() async {
  ExitCode exitCode;

  final versionCheck = args.get<bool>('version-check', defaultValue: true);

  if (args['disable-analytics'] case true) {
    analytics.disable();
  }

  try {
    logger
      ..detail('Received args: $args')
      ..detail('VERSION CHECK: $versionCheck');

    exitCode = await runCommand();
  } catch (error, stack) {
    logger
      ..err('$error')
      ..detail('$stack');
    exitCode = ExitCode.software;
  } finally {
    if (args.path case ['update', ...]) {
      logger.detail('Skipping version check');
    } else if (!versionCheck) {
      logger.detail('Skipping version check');
    } else {
      logger.detail('Checking for updates');
      if (!await isUpToDate.check()) {
        final latestVersion = await isUpToDate.latestVersion();
        logger.info(
          'A new version is available ($latestVersion). '
          'Run `sip update` to update.',
        );
      }
    }
  }

  return exitCode;
}