installGlobalPackage method

Future<AutoUpdateInstallStatus> installGlobalPackage({
  1. String? specificVersion,
})

Install a global package.

Implementation

Future<AutoUpdateInstallStatus> installGlobalPackage({
  String? specificVersion,
}) async {
  if (!await acquireLock()) {
    return AutoUpdateInstallStatus.inProgress;
  }

  try {
    final permissions = await checkGlobalInstallPermissions();
    if (!permissions.hasPermissions) {
      return AutoUpdateInstallStatus.noPermissions;
    }

    final packageSpec = specificVersion != null
        ? '$packageUrl@$specificVersion'
        : packageUrl;

    final packageManager = isRunningWithBun ? 'bun' : 'npm';
    final result = await _runCommand(packageManager, [
      'install',
      '-g',
      packageSpec,
    ]);

    if (result.exitCode != 0) {
      return AutoUpdateInstallStatus.installFailed;
    }

    updateStatus.value = AutoUpdateInstallStatus.success;
    return AutoUpdateInstallStatus.success;
  } finally {
    await releaseLock();
  }
}