Files
Jonathan Miller bd5f676e0a
Platform: moko-platform CI / Gate 2: Unit Tests (8.1) (push) Has been cancelled
Platform: moko-platform CI / Gate 2: Unit Tests (8.2) (push) Has been cancelled
Platform: moko-platform CI / Gate 2: Unit Tests (8.3) (push) Has been cancelled
Platform: moko-platform CI / Gate 3: Self-Health Check (push) Has been cancelled
Platform: moko-platform CI / Gate 4: Governance (push) Has been cancelled
Platform: moko-platform CI / Gate 5: Template Integrity (push) Has been cancelled
Platform: moko-platform CI / CI Summary (push) Has been cancelled
Generic: Repo Health / Scripts governance (push) Has been cancelled
Generic: Repo Health / Repository health (push) Has been cancelled
Generic: Repo Health / Report Issues (push) Has been cancelled
Generic: Repo Health / Site Health (push) Has been cancelled
Generic: Repo Health / Access control (push) Has been cancelled
Platform: moko-platform CI / Gate 1: Code Quality (push) Has been cancelled
Merge remote-tracking branch 'origin/dev'
# Conflicts:
#	cli/manifest_licensing.php
2026-06-06 11:49:30 -05:00

168 lines
5.0 KiB
Bash

#!/bin/bash
# Migration script from Python to Bash CLI
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'
clear
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${BLUE} Migration: Python → Bash CLI${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo
# Find .env file
ENV_LOCATIONS=(
"../.env"
"../../mcp-ssh-manager/.env"
"$HOME/mcp/mcp-ssh-manager/.env"
".env"
)
ENV_FILE=""
for location in "${ENV_LOCATIONS[@]}"; do
if [ -f "$location" ]; then
ENV_FILE="$location"
break
fi
done
if [ -z "$ENV_FILE" ]; then
echo -e "${RED}❌ No .env file found!${NC}"
echo
echo "Searched in:"
for location in "${ENV_LOCATIONS[@]}"; do
echo " • $location"
done
echo
echo "Please specify the path to your .env file:"
read -p "Path: " ENV_FILE
if [ ! -f "$ENV_FILE" ]; then
echo -e "${RED}File not found: $ENV_FILE${NC}"
exit 1
fi
fi
echo -e "${GREEN}✅ Found .env file:${NC} $ENV_FILE"
echo
# Count servers
SERVER_COUNT=$(grep "^SSH_SERVER_.*_HOST=" "$ENV_FILE" | wc -l | tr -d ' ')
echo -e "${BLUE}📊 Statistics:${NC}"
echo " • Servers configured: $SERVER_COUNT"
echo " • Configuration file: $(realpath "$ENV_FILE")"
echo
# Show servers
echo -e "${BLUE}🖥️ Your servers:${NC}"
grep "^SSH_SERVER_.*_HOST=" "$ENV_FILE" | while IFS= read -r line; do
SERVER_NAME=$(echo "$line" | sed 's/SSH_SERVER_\(.*\)_HOST=.*/\1/' | tr '[:upper:]' '[:lower:]')
HOST=$(echo "$line" | cut -d'=' -f2-)
echo " • $SERVER_NAME$HOST"
done
echo
# Check if CLI is installed
if command -v ssh-manager >/dev/null 2>&1; then
echo -e "${GREEN}✅ Bash CLI is installed${NC}"
CLI_PATH="ssh-manager"
else
echo -e "${YELLOW}⚠️ Bash CLI not installed globally${NC}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
CLI_PATH="$SCRIPT_DIR/ssh-manager"
if [ ! -f "$CLI_PATH" ]; then
echo -e "${RED}❌ CLI not found at $CLI_PATH${NC}"
exit 1
fi
echo -e "${BLUE}Installing CLI...${NC}"
./install.sh
if command -v ssh-manager >/dev/null 2>&1; then
echo -e "${GREEN}✅ CLI installed successfully${NC}"
CLI_PATH="ssh-manager"
fi
fi
echo
# Create alias for .env path
echo -e "${BLUE}🔧 Setting up environment...${NC}"
# Create wrapper script
WRAPPER="$HOME/.ssh-manager/ssh-manager-wrapper.sh"
mkdir -p "$HOME/.ssh-manager"
cat > "$WRAPPER" << EOF
#!/bin/bash
# Auto-generated wrapper for SSH Manager CLI
export SSH_MANAGER_ENV="$(realpath "$ENV_FILE")"
exec ssh-manager "\$@"
EOF
chmod +x "$WRAPPER"
echo -e "${GREEN}✅ Environment configured${NC}"
echo
# Add to shell profile
echo -e "${BLUE}📝 Shell configuration:${NC}"
echo
echo "Add this line to your ~/.bashrc or ~/.zshrc:"
echo
echo -e "${YELLOW}export SSH_MANAGER_ENV=\"$(realpath "$ENV_FILE")\"${NC}"
echo
echo "Or use the wrapper:"
echo -e "${YELLOW}alias ssh-manager='$WRAPPER'${NC}"
echo
# Test the setup
echo -e "${BLUE}🧪 Testing configuration...${NC}"
echo
export SSH_MANAGER_ENV="$(realpath "$ENV_FILE")"
# Test server list
if $CLI_PATH server list >/dev/null 2>&1; then
echo -e "${GREEN}✅ CLI can read your servers${NC}"
else
echo -e "${RED}❌ CLI failed to read servers${NC}"
exit 1
fi
echo
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}🎉 Migration complete!${NC}"
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo
echo -e "${BLUE}📚 Quick Start:${NC}"
echo
echo " 1. Interactive mode (with menu):"
echo " ${YELLOW}SSH_MANAGER_ENV=\"$(realpath "$ENV_FILE")\" ssh-manager${NC}"
echo
echo " 2. Direct commands:"
echo " ${YELLOW}SSH_MANAGER_ENV=\"$(realpath "$ENV_FILE")\" ssh-manager server list${NC}"
echo " ${YELLOW}SSH_MANAGER_ENV=\"$(realpath "$ENV_FILE")\" ssh-manager ssh dmis${NC}"
echo
echo " 3. Or use the wrapper:"
echo " ${YELLOW}$WRAPPER${NC}"
echo
echo -e "${BLUE}💡 Features comparison:${NC}"
echo
echo " Python CLI → Bash CLI"
echo " ─────────────────────────────────────────"
echo " server_manager.py → ssh-manager"
echo " Option 2 (Add) → ssh-manager server add"
echo " Option 1 (List) → ssh-manager server list"
echo " Option 3 (Test) → ssh-manager server test"
echo " Option 4 (Remove) → ssh-manager server remove"
echo
echo -e "${GREEN}✨ The Bash CLI is 10x faster and has the same features!${NC}"
echo