update static method

Future<void> update([
  1. bool isGit = false,
  2. bool forceUpdate = false
])

Implementation

static Future<void> update([
  bool isGit = false,
  bool forceUpdate = false,
]) async {
  isGit = GetCli.arguments.contains('--git');
  forceUpdate = GetCli.arguments.contains('-f');
  if (!isGit && !forceUpdate) {
    var versionInPubDev =
        await PubDevApi.getLatestVersionFromPackage('sm_get_cli');

    var versionInstalled = await PackageVersion.getVersionCli(
      disableLog: true,
    );

    if (versionInstalled == versionInPubDev) {
      return LogService.info(
        Translation(LocaleKeys.info_cli_last_version_already_installed.tr)
            .toString(),
      );
    }
  }

  LogService.info('Upgrading sm_get_cli …');

  try {
    var result = await Process.run('which', ['flutter']);
    final flutterPath = result.stdout.toString().trim();
    var hasFvm = false;
    if (flutterPath.contains('fvm')) {
      LogService.info(
        'fvm exists, will use fvm flutter to upgrade sm_get_cli',
      );
      hasFvm = true;
    }
    if (flutterPath.contains('flutter')) {
      if (isGit) {
        await run(
          '${hasFvm ? 'fvm ' : ''}flutter pub global activate -sgit https://github.com/sm-packages/sm_get_cli/',
          verbose: true,
        );
      } else {
        await run(
          '${hasFvm ? 'fvm ' : ''}flutter pub global activate sm_get_cli',
          verbose: true,
        );
      }
    } else {
      if (isGit) {
        await run(
          '${hasFvm ? 'fvm ' : ''}flutter pub global activate -sgit https://github.com/sm-packages/sm_get_cli/',
          verbose: true,
        );
      } else {
        await run(
          '${hasFvm ? 'fvm ' : ''}flutter pub global activate sm_get_cli',
          verbose: true,
        );
      }
    }
    return LogService.success(LocaleKeys.sucess_update_cli.tr);
  } on Exception catch (err) {
    LogService.info(err.toString());
    return LogService.error(LocaleKeys.error_update_cli.tr);
  }
}