mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-30 06:12:03 +00:00
adding shell script for ease of launching project, until cody gets off his butt and switches the npm run stuff ;)
This commit is contained in:
109
init.sh
109
init.sh
@@ -1,31 +1,108 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Automaker - Development Environment Setup Script
|
# Automaker - Development Environment Setup and Launch Script
|
||||||
|
|
||||||
echo "=== Automaker Development Environment Setup ==="
|
set -e # Exit on error
|
||||||
|
|
||||||
# Navigate to app directory
|
echo "╔═══════════════════════════════════════════════════════╗"
|
||||||
APP_DIR="$(dirname "$0")/app"
|
echo "║ Automaker Development Environment ║"
|
||||||
|
echo "╚═══════════════════════════════════════════════════════╝"
|
||||||
|
echo ""
|
||||||
|
|
||||||
if [ ! -d "$APP_DIR" ]; then
|
# Colors for output
|
||||||
echo "Error: app directory not found"
|
GREEN='\033[0;32m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Check if node is installed
|
||||||
|
if ! command -v node &> /dev/null; then
|
||||||
|
echo -e "${RED}Error: Node.js is not installed${NC}"
|
||||||
|
echo "Please install Node.js from https://nodejs.org/"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install dependencies if node_modules doesn't exist
|
# Install dependencies if needed
|
||||||
if [ ! -d "$APP_DIR/node_modules" ]; then
|
if [ ! -d "node_modules" ]; then
|
||||||
echo "Installing dependencies..."
|
echo -e "${BLUE}Installing dependencies...${NC}"
|
||||||
npm install --prefix "$APP_DIR"
|
npm install
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install Playwright browsers if needed
|
# Install Playwright browsers if needed
|
||||||
echo "Checking Playwright browsers..."
|
echo -e "${YELLOW}Checking Playwright browsers...${NC}"
|
||||||
npx playwright install chromium 2>/dev/null || true
|
npx playwright install chromium 2>/dev/null || true
|
||||||
|
|
||||||
# Kill any process on port 3000
|
# Kill any existing processes on required ports
|
||||||
echo "Checking port 3000..."
|
echo -e "${YELLOW}Checking for processes on ports 3007 and 3008...${NC}"
|
||||||
lsof -ti:3007 | xargs kill -9 2>/dev/null || true
|
lsof -ti:3007 | xargs kill -9 2>/dev/null || true
|
||||||
|
lsof -ti:3008 | xargs kill -9 2>/dev/null || true
|
||||||
|
|
||||||
# Start the dev server
|
# Start the backend server
|
||||||
echo "Starting Next.js development server..."
|
echo -e "${BLUE}Starting backend server on port 3008...${NC}"
|
||||||
npm run dev --prefix "$APP_DIR"
|
npm run dev:server > logs/server.log 2>&1 &
|
||||||
|
SERVER_PID=$!
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Waiting for server to be ready...${NC}"
|
||||||
|
|
||||||
|
# Wait for server health check
|
||||||
|
MAX_RETRIES=30
|
||||||
|
RETRY_COUNT=0
|
||||||
|
SERVER_READY=false
|
||||||
|
|
||||||
|
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
|
||||||
|
if curl -s http://localhost:3008/api/health > /dev/null 2>&1; then
|
||||||
|
SERVER_READY=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
RETRY_COUNT=$((RETRY_COUNT + 1))
|
||||||
|
echo -n "."
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ "$SERVER_READY" = false ]; then
|
||||||
|
echo -e "${RED}Error: Server failed to start${NC}"
|
||||||
|
echo "Check logs/server.log for details"
|
||||||
|
kill $SERVER_PID 2>/dev/null || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}✓ Server is ready!${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prompt user for application mode
|
||||||
|
echo "═══════════════════════════════════════════════════════"
|
||||||
|
echo " Select Application Mode:"
|
||||||
|
echo "═══════════════════════════════════════════════════════"
|
||||||
|
echo " 1) Web Application (Browser)"
|
||||||
|
echo " 2) Desktop Application (Electron)"
|
||||||
|
echo "═══════════════════════════════════════════════════════"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "Enter your choice (1 or 2): " choice
|
||||||
|
case $choice in
|
||||||
|
1)
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}Launching Web Application...${NC}"
|
||||||
|
echo "The application will be available at: ${GREEN}http://localhost:3007${NC}"
|
||||||
|
echo ""
|
||||||
|
npm run dev:web
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}Launching Desktop Application...${NC}"
|
||||||
|
npm run dev:electron
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}Invalid choice. Please enter 1 or 2.${NC}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Cleanup on exit
|
||||||
|
trap "echo 'Cleaning up...'; kill $SERVER_PID 2>/dev/null || true; exit" INT TERM EXIT
|
||||||
|
|||||||
Reference in New Issue
Block a user