veza/fixtures/tools/scripts/install.sh
2025-12-03 22:56:50 +01:00

260 lines
No EOL
6.9 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Veza Fixtures Installation Script
# Installs and configures the complete fixtures system
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Configuration
FIXTURES_DIR="fixtures"
NODE_VERSION="18"
# Helper functions
log_info() {
echo -e "${BLUE} $1${NC}"
}
log_success() {
echo -e "${GREEN}$1${NC}"
}
log_warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
log_error() {
echo -e "${RED}$1${NC}"
}
check_command() {
if ! command -v $1 &> /dev/null; then
log_error "$1 is required but not installed"
return 1
fi
return 0
}
# Main installation function
main() {
log_info "🎵 Installing Veza Fixtures System..."
# Check prerequisites
log_info "Checking prerequisites..."
if ! check_command "node"; then
log_error "Node.js is required. Please install Node.js ${NODE_VERSION} or later."
exit 1
fi
if ! check_command "npm"; then
log_error "npm is required. Please install npm."
exit 1
fi
# Check Node.js version
NODE_CURRENT=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
if [ "$NODE_CURRENT" -lt "$NODE_VERSION" ]; then
log_error "Node.js ${NODE_VERSION} or later is required. Current version: $(node -v)"
exit 1
fi
log_success "Prerequisites check passed"
# Navigate to fixtures directory
if [ ! -d "$FIXTURES_DIR" ]; then
log_error "Fixtures directory not found. Please run this script from the project root."
exit 1
fi
cd "$FIXTURES_DIR"
# Install dependencies
log_info "Installing Node.js dependencies..."
npm install
log_success "Dependencies installed"
# Build TypeScript
log_info "Building TypeScript..."
npm run build
log_success "TypeScript built successfully"
# Make CLI executable
log_info "Setting up CLI tool..."
chmod +x tools/cli/index.ts
# Create global symlink (optional)
if command -v npm &> /dev/null; then
log_info "Creating global CLI link..."
npm link 2>/dev/null || log_warning "Could not create global link. You may need sudo privileges."
fi
# Setup environment file
log_info "Setting up environment configuration..."
if [ ! -f ".env" ]; then
cp "../env.example" ".env" 2>/dev/null || {
cat > .env << EOF
# Veza Fixtures Environment Configuration
# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=veza
DB_PASSWORD=veza_password
DB_MAIN=veza_dev
DB_CHAT=veza_chat
DB_TEST=veza_test
# Redis Configuration
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
# Fixtures Configuration
FIXTURES_SEED=veza-platform-2025
FIXTURES_LOCALE=fr
EOF
}
log_success "Environment file created"
else
log_info "Environment file already exists"
fi
# Create assets directories
log_info "Creating asset directories..."
mkdir -p assets/audio
mkdir -p assets/images
mkdir -p exports
log_success "Asset directories created"
# Run initial validation
log_info "Running system validation..."
if npm run validate 2>/dev/null; then
log_success "System validation passed"
else
log_warning "System validation had warnings (this is normal for first install)"
fi
# Display success message and usage instructions
echo
log_success "🎉 Veza Fixtures System installed successfully!"
echo
log_info "Usage examples:"
echo " 📊 Generate fixtures: npm run generate -- --env development"
echo " 🌱 Seed services: npm run seed -- --service all"
echo " 🔍 Validate data: npm run validate"
echo " 📋 List scenarios: npm run scenario -- --list"
echo " Show status: npm run status"
echo
log_info "CLI tool (if globally linked):"
echo " veza-fixtures generate --env development"
echo " veza-fixtures seed --service web"
echo " veza-fixtures scenario --run onboarding"
echo
log_info "Configuration:"
echo " 📁 Edit .env file to customize database and service connections"
echo " 🎯 Use different environments: development, testing, staging, demo"
echo
log_info "Next steps:"
echo " 1. Configure your database connections in .env"
echo " 2. Start your services (PostgreSQL, Redis)"
echo " 3. Run: npm run generate -- --env development"
echo " 4. Run: npm run seed -- --service all"
echo
}
# Handle script arguments
case "${1:-install}" in
"install")
main
;;
"uninstall")
log_info "Uninstalling Veza Fixtures System..."
cd "$FIXTURES_DIR"
# Remove global link
npm unlink 2>/dev/null || true
# Clean build artifacts
rm -rf dist/
rm -rf node_modules/
# Clean exports
rm -rf exports/*
log_success "Uninstalled successfully"
;;
"update")
log_info "Updating Veza Fixtures System..."
cd "$FIXTURES_DIR"
# Update dependencies
npm update
# Rebuild
npm run build
log_success "Updated successfully"
;;
"doctor")
log_info "Running system diagnostics..."
cd "$FIXTURES_DIR"
# Check Node.js
echo "Node.js version: $(node -v)"
echo "npm version: $(npm -v)"
# Check dependencies
if [ -f "package.json" ]; then
log_info "Checking dependencies..."
npm list --depth=0 2>/dev/null || log_warning "Some dependencies may be missing"
fi
# Check environment
if [ -f ".env" ]; then
log_info "Environment file exists"
else
log_warning "Environment file missing"
fi
# Check build
if [ -d "dist" ]; then
log_info "Build directory exists"
else
log_warning "Build directory missing - run 'npm run build'"
fi
# Test CLI
if npm run status >/dev/null 2>&1; then
log_success "CLI tool working"
else
log_warning "CLI tool may have issues"
fi
log_success "Diagnostics complete"
;;
"help")
echo "Veza Fixtures Installation Script"
echo
echo "Usage: $0 [command]"
echo
echo "Commands:"
echo " install Install the fixtures system (default)"
echo " uninstall Remove the fixtures system"
echo " update Update dependencies and rebuild"
echo " doctor Run system diagnostics"
echo " help Show this help message"
echo
;;
*)
log_error "Unknown command: $1"
echo "Use '$0 help' for usage information"
exit 1
;;
esac