mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 12:10:49 +00:00
Merge branch 'main' into docker-standalone-exec
This commit is contained in:
commit
ffaf7b60b6
6 changed files with 437 additions and 125 deletions
|
|
@ -159,6 +159,66 @@ remove_volta_installation() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Check and uninstall nvm-managed package if present across all Node versions
|
||||
remove_nvm_installation() {
|
||||
# This script is run in sh shell for greatest compatibility.
|
||||
# Because nvm is usually setup in bash/zsh/fish startup scripts, we need to source it.
|
||||
# Otherwise it won't be available in sh.
|
||||
if [ -s "$HOME/.nvm/nvm.sh" ]; then
|
||||
# Source nvm to make it available in this script
|
||||
. "$HOME/.nvm/nvm.sh" >/dev/null 2>&1
|
||||
elif [ -s "$NVM_DIR/nvm.sh" ]; then
|
||||
. "$NVM_DIR/nvm.sh" >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
# Check if nvm is now available
|
||||
if ! command_exists nvm; then
|
||||
return
|
||||
fi
|
||||
|
||||
nvm_versions=$(nvm list 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' || echo "")
|
||||
|
||||
if [ -z "$nvm_versions" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
# Track if we found any installations
|
||||
found_installation=false
|
||||
uninstall_failed=false
|
||||
current_version=$(nvm current 2>/dev/null || echo "")
|
||||
|
||||
# Check each version for safe-chain installation
|
||||
for version in $nvm_versions; do
|
||||
# Check if this version has safe-chain installed
|
||||
# Use nvm exec to run npm list in the context of that Node version
|
||||
if nvm exec "$version" npm list -g @aikidosec/safe-chain >/dev/null 2>&1; then
|
||||
if [ "$found_installation" = false ]; then
|
||||
info "Detected nvm installation(s) of @aikidosec/safe-chain"
|
||||
info "Uninstalling from all Node versions..."
|
||||
found_installation=true
|
||||
fi
|
||||
|
||||
info " Removing from Node $version..."
|
||||
if nvm exec "$version" npm uninstall -g @aikidosec/safe-chain >/dev/null 2>&1; then
|
||||
info " Successfully uninstalled from Node $version"
|
||||
else
|
||||
warn " Failed to uninstall from Node $version"
|
||||
uninstall_failed=true
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Restore original Node version if it was set
|
||||
if [ -n "$current_version" ] && [ "$current_version" != "none" ] && [ "$current_version" != "system" ]; then
|
||||
nvm use "$current_version" >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
# If any uninstall failed, error out instead of continuing
|
||||
if [ "$uninstall_failed" = true ]; then
|
||||
error "Failed to uninstall @aikidosec/safe-chain from all nvm Node versions. Please uninstall manually and try again."
|
||||
fi
|
||||
}
|
||||
|
||||
# Parse command-line arguments
|
||||
parse_arguments() {
|
||||
for arg in "$@"; do
|
||||
|
|
@ -204,9 +264,10 @@ main() {
|
|||
|
||||
info "$INSTALL_MSG"
|
||||
|
||||
# Check for existing safe-chain installation through npm or volta
|
||||
# Check for existing safe-chain installation through nvm, volta, or npm
|
||||
remove_npm_installation
|
||||
remove_volta_installation
|
||||
remove_nvm_installation
|
||||
|
||||
# Detect platform
|
||||
OS=$(detect_os)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue