chore: include vendored node executable (#5160)
This commit is contained in:
Executable
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Enable strict mode to exit on errors and unset variables
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Get the directory where this script is located
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Source the common setup script
|
||||||
|
source "$SCRIPT_DIR/node-setup-common.sh"
|
||||||
|
|
||||||
|
# Final step: Execute node with passed arguments
|
||||||
|
log "Executing 'node' command with arguments: $*"
|
||||||
|
node "$@" || log "Failed to execute 'node' with arguments: $*"
|
||||||
|
|
||||||
|
log "node script completed successfully."
|
||||||
Executable
+101
@@ -0,0 +1,101 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Common setup script for node and npx
|
||||||
|
# This script sets up hermit and node.js environment
|
||||||
|
|
||||||
|
# Enable strict mode to exit on errors and unset variables
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Set log file
|
||||||
|
LOG_FILE="/tmp/mcp.log"
|
||||||
|
|
||||||
|
# Clear the log file at the start
|
||||||
|
> "$LOG_FILE"
|
||||||
|
|
||||||
|
# Function for logging
|
||||||
|
log() {
|
||||||
|
local MESSAGE="$1"
|
||||||
|
echo "$(date +'%Y-%m-%d %H:%M:%S') - $MESSAGE" | tee -a "$LOG_FILE" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Trap errors and log them before exiting
|
||||||
|
trap 'log "An error occurred. Exiting with status $?."' ERR
|
||||||
|
|
||||||
|
log "Starting node setup (common)."
|
||||||
|
|
||||||
|
# Ensure ~/.config/goose/mcp-hermit/bin exists
|
||||||
|
log "Creating directory ~/.config/goose/mcp-hermit/bin if it does not exist."
|
||||||
|
mkdir -p ~/.config/goose/mcp-hermit/bin
|
||||||
|
|
||||||
|
# Change to the ~/.config/goose/mcp-hermit directory
|
||||||
|
log "Changing to directory ~/.config/goose/mcp-hermit."
|
||||||
|
cd ~/.config/goose/mcp-hermit
|
||||||
|
|
||||||
|
|
||||||
|
# Check if hermit binary exists and download if not
|
||||||
|
if [ ! -f ~/.config/goose/mcp-hermit/bin/hermit ]; then
|
||||||
|
log "Hermit binary not found. Downloading hermit binary."
|
||||||
|
curl -fsSL "https://github.com/cashapp/hermit/releases/download/stable/hermit-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').gz" \
|
||||||
|
| gzip -dc > ~/.config/goose/mcp-hermit/bin/hermit && chmod +x ~/.config/goose/mcp-hermit/bin/hermit
|
||||||
|
log "Hermit binary downloaded and made executable."
|
||||||
|
else
|
||||||
|
log "Hermit binary already exists. Skipping download."
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
log "setting hermit cache to be local for MCP servers"
|
||||||
|
mkdir -p ~/.config/goose/mcp-hermit/cache
|
||||||
|
export HERMIT_STATE_DIR=~/.config/goose/mcp-hermit/cache
|
||||||
|
|
||||||
|
|
||||||
|
# Update PATH
|
||||||
|
export PATH=~/.config/goose/mcp-hermit/bin:$PATH
|
||||||
|
log "Updated PATH to include ~/.config/goose/mcp-hermit/bin."
|
||||||
|
|
||||||
|
|
||||||
|
# Verify hermit installation
|
||||||
|
log "Checking for hermit in PATH."
|
||||||
|
which hermit >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# Initialize hermit
|
||||||
|
log "Initializing hermit."
|
||||||
|
hermit init >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# Install Node.js using hermit
|
||||||
|
log "Installing Node.js with hermit."
|
||||||
|
hermit install node >> "$LOG_FILE"
|
||||||
|
|
||||||
|
# Verify installations
|
||||||
|
log "Verifying installation locations:"
|
||||||
|
log "hermit: $(which hermit)"
|
||||||
|
log "node: $(which node)"
|
||||||
|
log "npx: $(which npx)"
|
||||||
|
|
||||||
|
|
||||||
|
log "Checking for GOOSE_NPM_REGISTRY and GOOSE_NPM_CERT environment variables for custom npm registry setup..."
|
||||||
|
# Check if GOOSE_NPM_REGISTRY is set and accessible
|
||||||
|
if [ -n "${GOOSE_NPM_REGISTRY:-}" ] && curl -s --head --fail "$GOOSE_NPM_REGISTRY" > /dev/null; then
|
||||||
|
log "Checking custom goose registry availability: $GOOSE_NPM_REGISTRY"
|
||||||
|
log "$GOOSE_NPM_REGISTRY is accessible. Using it for npm registry."
|
||||||
|
export NPM_CONFIG_REGISTRY="$GOOSE_NPM_REGISTRY"
|
||||||
|
|
||||||
|
# Check if GOOSE_NPM_CERT is set and accessible
|
||||||
|
if [ -n "${GOOSE_NPM_CERT:-}" ] && curl -s --head --fail "$GOOSE_NPM_CERT" > /dev/null; then
|
||||||
|
log "Downloading certificate from: $GOOSE_NPM_CERT"
|
||||||
|
curl -sSL -o ~/.config/goose/mcp-hermit/cert.pem "$GOOSE_NPM_CERT"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
log "Certificate downloaded successfully."
|
||||||
|
export NODE_EXTRA_CA_CERTS=~/.config/goose/mcp-hermit/cert.pem
|
||||||
|
else
|
||||||
|
log "Unable to download the certificate. Skipping certificate setup."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log "GOOSE_NPM_CERT is either not set or not accessible. Skipping certificate setup."
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
log "GOOSE_NPM_REGISTRY is either not set or not accessible. Falling back to default npm registry."
|
||||||
|
export NPM_CONFIG_REGISTRY="https://registry.npmjs.org/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Node setup (common) completed successfully."
|
||||||
+5
-94
@@ -3,103 +3,14 @@
|
|||||||
# Enable strict mode to exit on errors and unset variables
|
# Enable strict mode to exit on errors and unset variables
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Set log file
|
# Get the directory where this script is located
|
||||||
LOG_FILE="/tmp/mcp.log"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
# Clear the log file at the start
|
|
||||||
> "$LOG_FILE"
|
|
||||||
|
|
||||||
# Function for logging
|
|
||||||
log() {
|
|
||||||
local MESSAGE="$1"
|
|
||||||
echo "$(date +'%Y-%m-%d %H:%M:%S') - $MESSAGE" | tee -a "$LOG_FILE" >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
# Trap errors and log them before exiting
|
|
||||||
trap 'log "An error occurred. Exiting with status $?."' ERR
|
|
||||||
|
|
||||||
log "Starting npx setup script."
|
|
||||||
|
|
||||||
# Ensure ~/.config/goose/mcp-hermit/bin exists
|
|
||||||
log "Creating directory ~/.config/goose/mcp-hermit/bin if it does not exist."
|
|
||||||
mkdir -p ~/.config/goose/mcp-hermit/bin
|
|
||||||
|
|
||||||
# Change to the ~/.config/goose/mcp-hermit directory
|
|
||||||
log "Changing to directory ~/.config/goose/mcp-hermit."
|
|
||||||
cd ~/.config/goose/mcp-hermit
|
|
||||||
|
|
||||||
|
|
||||||
# Check if hermit binary exists and download if not
|
|
||||||
if [ ! -f ~/.config/goose/mcp-hermit/bin/hermit ]; then
|
|
||||||
log "Hermit binary not found. Downloading hermit binary."
|
|
||||||
curl -fsSL "https://github.com/cashapp/hermit/releases/download/stable/hermit-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').gz" \
|
|
||||||
| gzip -dc > ~/.config/goose/mcp-hermit/bin/hermit && chmod +x ~/.config/goose/mcp-hermit/bin/hermit
|
|
||||||
log "Hermit binary downloaded and made executable."
|
|
||||||
else
|
|
||||||
log "Hermit binary already exists. Skipping download."
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
log "setting hermit cache to be local for MCP servers"
|
|
||||||
mkdir -p ~/.config/goose/mcp-hermit/cache
|
|
||||||
export HERMIT_STATE_DIR=~/.config/goose/mcp-hermit/cache
|
|
||||||
|
|
||||||
|
|
||||||
# Update PATH
|
|
||||||
export PATH=~/.config/goose/mcp-hermit/bin:$PATH
|
|
||||||
log "Updated PATH to include ~/.config/goose/mcp-hermit/bin."
|
|
||||||
|
|
||||||
|
|
||||||
# Verify hermit installation
|
|
||||||
log "Checking for hermit in PATH."
|
|
||||||
which hermit >> "$LOG_FILE"
|
|
||||||
|
|
||||||
# Initialize hermit
|
|
||||||
log "Initializing hermit."
|
|
||||||
hermit init >> "$LOG_FILE"
|
|
||||||
|
|
||||||
# Install Node.js using hermit
|
|
||||||
log "Installing Node.js with hermit."
|
|
||||||
hermit install node >> "$LOG_FILE"
|
|
||||||
|
|
||||||
# Verify installations
|
|
||||||
log "Verifying installation locations:"
|
|
||||||
log "hermit: $(which hermit)"
|
|
||||||
log "node: $(which node)"
|
|
||||||
log "npx: $(which npx)"
|
|
||||||
|
|
||||||
|
|
||||||
log "Checking for GOOSE_NPM_REGISTRY and GOOSE_NPM_CERT environment variables for custom npm registry setup..."
|
|
||||||
# Check if GOOSE_NPM_REGISTRY is set and accessible
|
|
||||||
if [ -n "${GOOSE_NPM_REGISTRY:-}" ] && curl -s --head --fail "$GOOSE_NPM_REGISTRY" > /dev/null; then
|
|
||||||
log "Checking custom goose registry availability: $GOOSE_NPM_REGISTRY"
|
|
||||||
log "$GOOSE_NPM_REGISTRY is accessible. Using it for npm registry."
|
|
||||||
export NPM_CONFIG_REGISTRY="$GOOSE_NPM_REGISTRY"
|
|
||||||
|
|
||||||
# Check if GOOSE_NPM_CERT is set and accessible
|
|
||||||
if [ -n "${GOOSE_NPM_CERT:-}" ] && curl -s --head --fail "$GOOSE_NPM_CERT" > /dev/null; then
|
|
||||||
log "Downloading certificate from: $GOOSE_NPM_CERT"
|
|
||||||
curl -sSL -o ~/.config/goose/mcp-hermit/cert.pem "$GOOSE_NPM_CERT"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
log "Certificate downloaded successfully."
|
|
||||||
export NODE_EXTRA_CA_CERTS=~/.config/goose/mcp-hermit/cert.pem
|
|
||||||
else
|
|
||||||
log "Unable to download the certificate. Skipping certificate setup."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
log "GOOSE_NPM_CERT is either not set or not accessible. Skipping certificate setup."
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
log "GOOSE_NPM_REGISTRY is either not set or not accessible. Falling back to default npm registry."
|
|
||||||
export NPM_CONFIG_REGISTRY="https://registry.npmjs.org/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Source the common setup script
|
||||||
|
source "$SCRIPT_DIR/node-setup-common.sh"
|
||||||
|
|
||||||
# Final step: Execute npx with passed arguments
|
# Final step: Execute npx with passed arguments
|
||||||
log "Executing 'npx' command with arguments: $*"
|
log "Executing 'npx' command with arguments: $*"
|
||||||
npx "$@" || log "Failed to execute 'npx' with arguments: $*"
|
npx "$@" || log "Failed to execute 'npx' with arguments: $*"
|
||||||
|
|
||||||
log "npx setup script completed successfully."
|
log "npx script completed successfully."
|
||||||
|
|||||||
Reference in New Issue
Block a user