1+ #! /bin/bash
2+
3+ # Pre-installation check script for Laravel Claude Code Setup
4+ # Run this before setup.sh to identify potential issues
5+
6+ set -e
7+
8+ # Colors for output
9+ RED=' \033[0;31m'
10+ GREEN=' \033[0;32m'
11+ YELLOW=' \033[1;33m'
12+ BLUE=' \033[0;34m'
13+ NC=' \033[0m' # No Color
14+
15+ print_status () {
16+ echo -e " ${BLUE} [CHECK]${NC} $1 "
17+ }
18+
19+ print_success () {
20+ echo -e " ${GREEN} [PASS]${NC} $1 "
21+ }
22+
23+ print_warning () {
24+ echo -e " ${YELLOW} [WARN]${NC} $1 "
25+ }
26+
27+ print_error () {
28+ echo -e " ${RED} [FAIL]${NC} $1 "
29+ }
30+
31+ print_header () {
32+ echo -e " ${BLUE} === $1 ===${NC} "
33+ }
34+
35+ echo " Laravel Claude Code Setup - Pre-Installation Check"
36+ echo " ================================================="
37+ echo " "
38+
39+ ISSUES_FOUND=0
40+
41+ print_header " Laravel Project Verification"
42+
43+ # Check if we're in a Laravel project
44+ if [ ! -f " artisan" ] || [ ! -f " composer.json" ]; then
45+ print_error " Not a Laravel project directory"
46+ (( ISSUES_FOUND++ ))
47+ else
48+ print_success " Laravel project detected"
49+ fi
50+
51+ # Check .env file
52+ if [ ! -f " .env" ]; then
53+ print_error " .env file not found"
54+ print_status " Copy .env.example to .env and configure it"
55+ (( ISSUES_FOUND++ ))
56+ else
57+ print_success " .env file exists"
58+
59+ # Check database configuration
60+ if ! grep -q " ^DB_DATABASE=" .env || grep -q " ^DB_DATABASE=$" .env; then
61+ print_warning " DB_DATABASE not configured in .env"
62+ print_status " Database MCP integration will be skipped"
63+ print_status " To fix: Set DB_DATABASE=your_database_name in .env"
64+ else
65+ print_success " Database configuration found"
66+ fi
67+ fi
68+
69+ print_header " System Requirements"
70+
71+ # Check PHP version
72+ if command -v php & > /dev/null; then
73+ PHP_VERSION=$( php -r " echo PHP_VERSION;" )
74+ if [[ $( echo " $PHP_VERSION 8.3" | awk ' {print ($1 >= $2)}' ) == " 1" ]]; then
75+ print_success " PHP $PHP_VERSION (meets Laravel 12 requirement)"
76+ else
77+ print_error " PHP $PHP_VERSION (Laravel 12 requires PHP 8.3+)"
78+ (( ISSUES_FOUND++ ))
79+ fi
80+ else
81+ print_error " PHP not found"
82+ (( ISSUES_FOUND++ ))
83+ fi
84+
85+ # Check Node.js version
86+ if command -v node & > /dev/null; then
87+ NODE_VERSION=$( node --version | sed ' s/v//' )
88+ NODE_MAJOR=$( echo $NODE_VERSION | cut -d. -f1)
89+ if [ " $NODE_MAJOR " -ge 20 ]; then
90+ print_success " Node.js $NODE_VERSION (meets requirement)"
91+ else
92+ print_warning " Node.js $NODE_VERSION (recommended: 20+)"
93+ fi
94+ else
95+ print_error " Node.js not found"
96+ (( ISSUES_FOUND++ ))
97+ fi
98+
99+ # Check npm
100+ if command -v npm & > /dev/null; then
101+ NPM_VERSION=$( npm --version)
102+ print_success " npm $NPM_VERSION "
103+ else
104+ print_error " npm not found"
105+ (( ISSUES_FOUND++ ))
106+ fi
107+
108+ # Check Git
109+ if command -v git & > /dev/null; then
110+ print_success " Git available"
111+ else
112+ print_error " Git not found (required for MCP server installation)"
113+ (( ISSUES_FOUND++ ))
114+ fi
115+
116+ # Check Claude Code
117+ if command -v claude & > /dev/null; then
118+ CLAUDE_VERSION=$( claude --version 2> /dev/null || echo " unknown" )
119+ print_success " Claude Code installed ($CLAUDE_VERSION )"
120+ else
121+ print_error " Claude Code not found"
122+ print_status " Install from: https://claude.ai/code"
123+ (( ISSUES_FOUND++ ))
124+ fi
125+
126+ print_header " Optional Dependencies"
127+
128+ # Check Go (for database MCP server)
129+ if command -v go & > /dev/null; then
130+ GO_VERSION=$( go version | grep -o ' go[0-9]*\.[0-9]*' | grep -o ' [0-9]*\.[0-9]*' )
131+ print_success " Go $GO_VERSION (for database MCP server)"
132+ else
133+ print_warning " Go not found (database MCP server will be skipped)"
134+ print_status " Install Go from: https://golang.org/dl/"
135+ fi
136+
137+ # Check Laravel Herd
138+ if command -v herd & > /dev/null; then
139+ print_success " Laravel Herd available"
140+ else
141+ print_warning " Laravel Herd not found"
142+ print_status " Install from: https://herd.laravel.com"
143+ print_status " Recommended for optimal local development experience"
144+ fi
145+
146+ print_header " Project Dependencies"
147+
148+ # Check if composer.json has required packages
149+ if [ -f " composer.json" ]; then
150+ if grep -q " livewire/flux" composer.json; then
151+ print_success " FluxUI package found"
152+ else
153+ print_warning " FluxUI not installed"
154+ print_status " Will be installed during setup if you choose"
155+ fi
156+
157+ if grep -q " livewire/volt" composer.json; then
158+ print_success " Livewire Volt package found"
159+ else
160+ print_warning " Livewire Volt not installed"
161+ print_status " Will be installed during setup if you choose"
162+ fi
163+ fi
164+
165+ # Check package.json for Playwright
166+ if [ -f " package.json" ]; then
167+ if grep -q " @playwright/test" package.json; then
168+ print_success " Playwright test package found"
169+ else
170+ print_warning " Playwright not in package.json"
171+ print_status " Playwright browsers will need manual installation later"
172+ fi
173+ fi
174+
175+ echo " "
176+ print_header " Summary"
177+
178+ if [ $ISSUES_FOUND -eq 0 ]; then
179+ print_success " All requirements met! Ready to run setup.sh"
180+ echo " "
181+ echo " Run: ./setup.sh"
182+ else
183+ print_error " Found $ISSUES_FOUND critical issue(s) that need to be resolved"
184+ echo " "
185+ echo " Please fix the issues above before running setup.sh"
186+ fi
187+
188+ echo " "
189+ exit $ISSUES_FOUND
0 commit comments