diff --git a/install-scripts/install-safe-chain.ps1 b/install-scripts/install-safe-chain.ps1 index e185d2a..9283170 100644 --- a/install-scripts/install-safe-chain.ps1 +++ b/install-scripts/install-safe-chain.ps1 @@ -60,6 +60,31 @@ function Remove-NpmInstallation { } } +# Check and uninstall Volta-managed package if present +function Remove-VoltaInstallation { + # Check if Volta is available + if (-not (Get-Command volta -ErrorAction SilentlyContinue)) { + return + } + + # Volta manages global packages in its own directory + # Check if safe-chain is installed via Volta + volta list @aikidosec/safe-chain 2>&1 | Out-Null + if ($LASTEXITCODE -eq 0) { + Write-Info "Detected Volta installation of @aikidosec/safe-chain" + Write-Info "Uninstalling Volta version before installing binary version..." + + volta uninstall @aikidosec/safe-chain 2>&1 | Out-Null + if ($LASTEXITCODE -eq 0) { + Write-Info "Successfully uninstalled Volta version" + } + else { + Write-Warn "Failed to uninstall Volta version automatically" + Write-Warn "Please run: volta uninstall @aikidosec/safe-chain" + } + } +} + # Main installation function Install-SafeChain { Write-Info "Installing safe-chain $Version..." @@ -67,6 +92,9 @@ function Install-SafeChain { # Check for existing npm installation Remove-NpmInstallation + # Check for existing Volta installation + Remove-VoltaInstallation + # Detect platform $arch = Get-Architecture $binaryName = "safe-chain-win-$arch.exe" diff --git a/install-scripts/install-safe-chain.sh b/install-scripts/install-safe-chain.sh index 6f8480e..671e52e 100755 --- a/install-scripts/install-safe-chain.sh +++ b/install-scripts/install-safe-chain.sh @@ -88,6 +88,27 @@ check_npm_installation() { fi } +# Check and uninstall Volta-managed package if present +check_volta_installation() { + if ! command_exists volta; then + return + fi + + # Volta manages global packages in its own directory + # Check if safe-chain is installed via Volta + if volta list @aikidosec/safe-chain >/dev/null 2>&1; then + info "Detected Volta installation of @aikidosec/safe-chain" + info "Uninstalling Volta version before installing binary version..." + + if volta uninstall @aikidosec/safe-chain >/dev/null 2>&1; then + info "Successfully uninstalled Volta version" + else + warn "Failed to uninstall Volta version automatically" + warn "Please run: volta uninstall @aikidosec/safe-chain" + fi + fi +} + # Main installation main() { info "Installing safe-chain ${VERSION}..." @@ -95,6 +116,9 @@ main() { # Check for existing npm installation check_npm_installation + # Check for existing Volta installation + check_volta_installation + # Detect platform OS=$(detect_os) ARCH=$(detect_arch)