#!/bin/bash # Install Dependencies Script # This script installs npm and composer dependencies throughout the project set -e # Exit on error # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Counters npm_success=0 npm_failed=0 composer_success=0 composer_failed=0 echo -e "${BLUE}=====================================${NC}" echo -e "${BLUE} Installing Project Dependencies${NC}" echo -e "${BLUE}=====================================${NC}" echo "" # Check if npm is installed if ! command -v npm &> /dev/null; then echo -e "${RED}Error: npm is not installed${NC}" echo "Please install Node.js and npm first" exit 1 fi # Check if composer is installed if ! command -v composer &> /dev/null; then echo -e "${YELLOW}Warning: composer is not installed${NC}" echo "Composer dependencies will be skipped" SKIP_COMPOSER=1 else SKIP_COMPOSER=0 fi echo "" echo -e "${BLUE}Searching for package.json files...${NC}" # Find and install npm dependencies # Exclude node_modules and vendor directories while IFS= read -r package_file; do dir=$(dirname "$package_file") # Skip if it's inside node_modules or vendor if [[ "$dir" == *"/node_modules/"* ]] || [[ "$dir" == *"/vendor/"* ]]; then continue fi echo "" echo -e "${YELLOW}────────────────────────────────────${NC}" echo -e "${GREEN}Found: $package_file${NC}" echo -e "${BLUE}Installing npm dependencies in: $dir${NC}" if (cd "$dir" && npm install); then echo -e "${GREEN}✓ Successfully installed npm dependencies in $dir${NC}" ((npm_success++)) else echo -e "${RED}✗ Failed to install npm dependencies in $dir${NC}" ((npm_failed++)) fi done < <(find . -name "package.json" -type f) echo "" echo -e "${BLUE}Searching for composer.json files...${NC}" # Find and install composer dependencies if [ $SKIP_COMPOSER -eq 0 ]; then while IFS= read -r composer_file; do dir=$(dirname "$composer_file") # Skip if it's inside node_modules or vendor if [[ "$dir" == *"/node_modules/"* ]] || [[ "$dir" == *"/vendor/"* ]]; then continue fi echo "" echo -e "${YELLOW}────────────────────────────────────${NC}" echo -e "${GREEN}Found: $composer_file${NC}" echo -e "${BLUE}Installing composer dependencies in: $dir${NC}" if (cd "$dir" && composer install --no-interaction); then echo -e "${GREEN}✓ Successfully installed composer dependencies in $dir${NC}" ((composer_success++)) else echo -e "${RED}✗ Failed to install composer dependencies in $dir${NC}" ((composer_failed++)) fi done < <(find . -name "composer.json" -type f) else echo -e "${YELLOW}Skipping composer installations (composer not found)${NC}" fi # Summary echo "" echo -e "${BLUE}=====================================${NC}" echo -e "${BLUE} Installation Summary${NC}" echo -e "${BLUE}=====================================${NC}" echo -e "${GREEN}NPM packages installed successfully: $npm_success${NC}" if [ $npm_failed -gt 0 ]; then echo -e "${RED}NPM packages failed: $npm_failed${NC}" fi if [ $SKIP_COMPOSER -eq 0 ]; then echo -e "${GREEN}Composer packages installed successfully: $composer_success${NC}" if [ $composer_failed -gt 0 ]; then echo -e "${RED}Composer packages failed: $composer_failed${NC}" fi fi echo "" if [ $npm_failed -gt 0 ] || [ $composer_failed -gt 0 ]; then echo -e "${YELLOW}Some installations failed. Check the output above for details.${NC}" exit 1 else echo -e "${GREEN}All dependencies installed successfully!${NC}" fi