You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							110 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							110 lines
						
					
					
						
							3.2 KiB
						
					
					
				
								#!/bin/bash
							 | 
						|
								# check-dependencies.sh
							 | 
						|
								# Author: Matthew Raymer
							 | 
						|
								# Date: 2025-08-19
							 | 
						|
								# Description: Dependency validation script for TimeSafari development environment
							 | 
						|
								# This script checks for critical dependencies required for building the application.
							 | 
						|
								
							 | 
						|
								# Exit on any error
							 | 
						|
								set -e
							 | 
						|
								
							 | 
						|
								# Source common utilities
							 | 
						|
								source "$(dirname "$0")/common.sh"
							 | 
						|
								
							 | 
						|
								print_header "TimeSafari Dependency Validation"
							 | 
						|
								
							 | 
						|
								log_info "Checking development environment dependencies..."
							 | 
						|
								
							 | 
						|
								# Check Node.js version
							 | 
						|
								if command -v node &> /dev/null; then
							 | 
						|
								    NODE_VERSION=$(node --version)
							 | 
						|
								    log_info "Node.js version: $NODE_VERSION"
							 | 
						|
								    
							 | 
						|
								    # Extract major version number
							 | 
						|
								    MAJOR_VERSION=$(echo $NODE_VERSION | sed 's/v\([0-9]*\)\..*/\1/')
							 | 
						|
								    if [ "$MAJOR_VERSION" -lt 18 ]; then
							 | 
						|
								        log_error "Node.js version $NODE_VERSION is too old. Please upgrade to Node.js 18 or later."
							 | 
						|
								        exit 1
							 | 
						|
								    fi
							 | 
						|
								else
							 | 
						|
								    log_error "Node.js is not installed. Please install Node.js 18 or later."
							 | 
						|
								    exit 1
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								# Check npm version
							 | 
						|
								if command -v npm &> /dev/null; then
							 | 
						|
								    NPM_VERSION=$(npm --version)
							 | 
						|
								    log_info "npm version: $NPM_VERSION"
							 | 
						|
								else
							 | 
						|
								    log_error "npm is not installed. Please install npm."
							 | 
						|
								    exit 1
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								# Check if node_modules exists
							 | 
						|
								if [ ! -d "node_modules" ]; then
							 | 
						|
								    log_error "node_modules directory not found."
							 | 
						|
								    log_info "Please run: npm install"
							 | 
						|
								    exit 1
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								# Check critical dependencies
							 | 
						|
								log_info "Validating critical packages..."
							 | 
						|
								
							 | 
						|
								CRITICAL_DEPS=("tsx" "capacitor-assets" "vite")
							 | 
						|
								
							 | 
						|
								for dep in "${CRITICAL_DEPS[@]}"; do
							 | 
						|
								    if [ -f "node_modules/.bin/$dep" ]; then
							 | 
						|
								        log_success "✓ $dep found"
							 | 
						|
								    else
							 | 
						|
								        log_error "✗ $dep not found in node_modules/.bin"
							 | 
						|
								        log_info "This usually means the package wasn't installed properly."
							 | 
						|
								        log_info "Try running: npm install"
							 | 
						|
								        exit 1
							 | 
						|
								    fi
							 | 
						|
								done
							 | 
						|
								
							 | 
						|
								# Check TypeScript via npx
							 | 
						|
								if npx tsc --version &> /dev/null; then
							 | 
						|
								    TSC_VERSION=$(npx tsc --version)
							 | 
						|
								    log_success "✓ TypeScript found: $TSC_VERSION"
							 | 
						|
								else
							 | 
						|
								    log_error "✗ TypeScript not accessible via npx"
							 | 
						|
								    log_info "Try running: npm install"
							 | 
						|
								    exit 1
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								# Check Capacitor CLI
							 | 
						|
								if command -v npx &> /dev/null; then
							 | 
						|
								    if npx cap --version &> /dev/null; then
							 | 
						|
								        CAP_VERSION=$(npx cap --version)
							 | 
						|
								        log_success "✓ Capacitor CLI version: $CAP_VERSION"
							 | 
						|
								    else
							 | 
						|
								        log_error "✗ Capacitor CLI not accessible via npx"
							 | 
						|
								        log_info "Try running: npm install @capacitor/cli"
							 | 
						|
								        exit 1
							 | 
						|
								    fi
							 | 
						|
								else
							 | 
						|
								    log_error "npx is not available. Please ensure npm is properly installed."
							 | 
						|
								    exit 1
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								# Check Android development tools
							 | 
						|
								if command -v adb &> /dev/null; then
							 | 
						|
								    log_success "✓ Android Debug Bridge (adb) found"
							 | 
						|
								else
							 | 
						|
								    log_warn "⚠ Android Debug Bridge (adb) not found"
							 | 
						|
								    log_info "This is only needed for Android development and testing."
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								if command -v gradle &> /dev/null; then
							 | 
						|
								    GRADLE_VERSION=$(gradle --version | head -n 1)
							 | 
						|
								    log_success "✓ Gradle found: $GRADLE_VERSION"
							 | 
						|
								else
							 | 
						|
								    log_warn "⚠ Gradle not found in PATH"
							 | 
						|
								    log_info "This is only needed if building outside of Android Studio."
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								log_success "Dependency validation completed successfully!"
							 | 
						|
								log_info "Your development environment is ready for TimeSafari development."
							 | 
						|
								
							 | 
						|
								print_footer "Dependency Validation"
							 | 
						|
								
							 |