|
|
#!/bin/bash
|
|
|
|
|
|
# Personal Network Manager Setup Script
|
|
|
# This script installs Node.js 20 via NVM and Bun package manager
|
|
|
|
|
|
set -e
|
|
|
|
|
|
echo "🚀 Personal Network Manager Setup Script"
|
|
|
echo "=========================================="
|
|
|
|
|
|
# Check if we're on macOS or Linux
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
echo "✓ Detected macOS"
|
|
|
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
|
echo "✓ Detected Linux"
|
|
|
else
|
|
|
echo "❌ This script is designed for macOS and Linux only"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
# Install Homebrew on macOS
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
echo ""
|
|
|
echo "🍺 Checking for Homebrew..."
|
|
|
if command -v brew &> /dev/null; then
|
|
|
echo "✓ Homebrew is already installed"
|
|
|
else
|
|
|
echo "📦 Installing Homebrew..."
|
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
|
echo "✓ Homebrew installed"
|
|
|
fi
|
|
|
|
|
|
echo ""
|
|
|
echo "📦 Checking for Git..."
|
|
|
if command -v git &> /dev/null; then
|
|
|
echo "✓ Git is already installed"
|
|
|
else
|
|
|
echo "📦 Installing Git via Homebrew..."
|
|
|
brew install git
|
|
|
echo "✓ Git installed"
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
# Install NVM
|
|
|
echo ""
|
|
|
echo "📦 Installing NVM (Node Version Manager)..."
|
|
|
if [ -d "$HOME/.nvm" ]; then
|
|
|
echo "✓ NVM directory already exists"
|
|
|
else
|
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
|
|
|
echo "✓ NVM installed"
|
|
|
fi
|
|
|
|
|
|
# Update ~/.zshrc with NVM configuration
|
|
|
echo ""
|
|
|
echo "🔧 Updating ~/.zshrc with NVM configuration..."
|
|
|
NVM_CONFIG='export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
|
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'
|
|
|
|
|
|
# Check if NVM config already exists in ~/.zshrc
|
|
|
if grep -q "NVM_DIR" ~/.zshrc 2>/dev/null; then
|
|
|
echo "✓ NVM configuration already exists in ~/.zshrc"
|
|
|
else
|
|
|
echo "" >> ~/.zshrc
|
|
|
echo "# NVM Configuration" >> ~/.zshrc
|
|
|
echo "$NVM_CONFIG" >> ~/.zshrc
|
|
|
echo "✓ NVM configuration added to ~/.zshrc"
|
|
|
fi
|
|
|
|
|
|
# Source NVM for current session
|
|
|
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
|
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
|
|
|
|
# Install Node.js 20
|
|
|
echo ""
|
|
|
echo "📦 Checking for Node.js 20..."
|
|
|
if command -v node &> /dev/null; then
|
|
|
NODE_VERSION=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
|
|
if [ "$NODE_VERSION" -eq 20 ]; then
|
|
|
echo "✓ Node.js 20 is already installed"
|
|
|
else
|
|
|
echo "📦 Installing Node.js 20..."
|
|
|
nvm install 20
|
|
|
nvm use 20
|
|
|
nvm alias default 20
|
|
|
echo "✓ Node.js 20 installed and set as default"
|
|
|
fi
|
|
|
else
|
|
|
echo "📦 Installing Node.js 20..."
|
|
|
nvm install 20
|
|
|
nvm use 20
|
|
|
nvm alias default 20
|
|
|
echo "✓ Node.js 20 installed and set as default"
|
|
|
fi
|
|
|
|
|
|
# Install Bun
|
|
|
echo ""
|
|
|
echo "📦 Installing Bun..."
|
|
|
if command -v bun &> /dev/null; then
|
|
|
echo "✓ Bun is already installed"
|
|
|
else
|
|
|
curl -fsSL https://bun.sh/install | bash
|
|
|
echo "✓ Bun installed"
|
|
|
fi
|
|
|
|
|
|
# Install Claude Code
|
|
|
echo ""
|
|
|
echo "🤖 Checking for Claude Code..."
|
|
|
if command -v claude &> /dev/null; then
|
|
|
echo "✓ Claude Code is already installed"
|
|
|
else
|
|
|
echo "📦 Installing Claude Code..."
|
|
|
npm install -g @anthropic-ai/claude-code
|
|
|
echo "✓ Claude Code installed"
|
|
|
fi
|
|
|
|
|
|
# Install project dependencies
|
|
|
echo ""
|
|
|
echo "📦 Installing project dependencies..."
|
|
|
if [ -f "package.json" ]; then
|
|
|
bun install
|
|
|
echo "✓ Dependencies installed"
|
|
|
else
|
|
|
echo "⚠️ No package.json found - skipping dependency installation"
|
|
|
fi
|
|
|
|
|
|
echo ""
|
|
|
echo "🎉 Setup complete!"
|
|
|
echo ""
|
|
|
echo "Next steps:"
|
|
|
echo "1. Restart your terminal or run: source ~/.zshrc"
|
|
|
echo "2. Verify installation: node --version && bun --version"
|
|
|
echo "3. Start development: bun run dev"
|
|
|
|