mirror of
https://github.com/php-flasher/php-flasher.git
synced 2026-03-31 15:07:47 +01:00
159 lines
4.4 KiB
Bash
Executable File
159 lines
4.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -o pipefail
|
|
|
|
# Colors and styles
|
|
readonly RESET='\033[0m'
|
|
readonly BOLD='\033[1m'
|
|
readonly DIM='\033[2m'
|
|
readonly UNDERLINE='\033[4m'
|
|
readonly BLUE='\033[34m'
|
|
readonly GREEN='\033[32m'
|
|
readonly RED='\033[31m'
|
|
readonly YELLOW='\033[33m'
|
|
readonly CYAN='\033[36m'
|
|
readonly MAGENTA='\033[35m'
|
|
|
|
# Essential emojis
|
|
readonly ROCKET="🚀"
|
|
readonly CHECK="✓"
|
|
readonly ERROR="❌"
|
|
readonly WARNING="⚠️"
|
|
readonly SEARCH="🔍"
|
|
readonly PALETTE="🎨"
|
|
readonly MICROSCOPE="🔬"
|
|
readonly MEMO="📝"
|
|
readonly MAGNIFIER="🔎"
|
|
readonly TEST_TUBE="🧪"
|
|
readonly SPARKLES="✨"
|
|
|
|
print_header() {
|
|
echo -e "\n${BOLD}${BLUE}${ROCKET} PHP-Flasher Code Quality Check ${ROCKET}${RESET}\n"
|
|
echo -e "${BOLD}Date : ${RESET}${CYAN}$(date -u '+%Y-%m-%d %H:%M:%S') UTC${RESET}"
|
|
echo -e "${BOLD}User : ${RESET}${MAGENTA}yoeunes${RESET}"
|
|
echo -e "${BOLD}Branch : ${RESET}${GREEN}$(git rev-parse --abbrev-ref HEAD)${RESET}"
|
|
echo -e "${BOLD}Directory : ${RESET}${BLUE}$(pwd)${RESET}\n"
|
|
}
|
|
|
|
run_rector() {
|
|
echo -e "${BOLD}${SEARCH} Running Rector${RESET}"
|
|
|
|
if php vendor/bin/rector; then
|
|
echo -e "${CHECK} ${GREEN}Rector completed successfully${RESET}\n"
|
|
return 0
|
|
else
|
|
echo -e "${WARNING} ${YELLOW}Rector found issues${RESET}\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
run_php_cs_fixer() {
|
|
echo -e "${BOLD}${PALETTE} Running PHP-CS-Fixer${RESET}"
|
|
|
|
if php vendor/bin/php-cs-fixer fix -v; then
|
|
echo -e "${CHECK} ${GREEN}PHP-CS-Fixer completed successfully${RESET}\n"
|
|
return 0
|
|
else
|
|
echo -e "${WARNING} ${YELLOW}CS-Fixer found issues${RESET}\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
run_phpstan() {
|
|
echo -e "${BOLD}${MICROSCOPE} Running PHPStan${RESET}"
|
|
|
|
if php vendor/bin/phpstan analyse --memory-limit=-1; then
|
|
echo -e "${CHECK} ${GREEN}PHPStan analysis completed successfully${RESET}\n"
|
|
return 0
|
|
else
|
|
echo -e "${WARNING} ${YELLOW}PHPStan found issues${RESET}\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
validate_composer_files() {
|
|
echo -e "${BOLD}${MEMO} Validating Composer Files${RESET}"
|
|
local validation_success=true
|
|
|
|
if ! composer validate --strict; then
|
|
echo -e "${WARNING} ${YELLOW}Main composer.json validation failed${RESET}"
|
|
validation_success=false
|
|
fi
|
|
|
|
# Find and validate all composer.json files in src/
|
|
find src/ -name "composer.json" | while read file; do
|
|
echo -e "${DIM}Validating ${file}${RESET}"
|
|
if ! composer validate --strict "$file"; then
|
|
echo -e "${WARNING} ${YELLOW}Package validation failed for ${file}${RESET}"
|
|
validation_success=false
|
|
fi
|
|
done
|
|
|
|
if [ "$validation_success" = true ]; then
|
|
echo -e "${CHECK} ${GREEN}All composer.json files are valid${RESET}\n"
|
|
return 0
|
|
else
|
|
echo -e "${WARNING} ${YELLOW}Some composer.json files have issues${RESET}\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
run_phplint() {
|
|
echo -e "${BOLD}${MAGNIFIER} Running PHPLint${RESET}"
|
|
|
|
if php vendor/bin/phplint; then
|
|
echo -e "${CHECK} ${GREEN}PHPLint completed successfully${RESET}\n"
|
|
return 0
|
|
else
|
|
echo -e "${WARNING} ${YELLOW}PHPLint found issues${RESET}\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
run_phpunit() {
|
|
echo -e "${BOLD}${TEST_TUBE} Running PHPUnit Tests${RESET}"
|
|
|
|
if php vendor/bin/phpunit; then
|
|
echo -e "${CHECK} ${GREEN}All tests passed successfully${RESET}\n"
|
|
return 0
|
|
else
|
|
echo -e "${WARNING} ${YELLOW}Tests failed${RESET}\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
local start_time=$(date +%s)
|
|
local issues_found=false
|
|
|
|
print_header
|
|
|
|
# Run all quality tools
|
|
run_rector || issues_found=true
|
|
run_php_cs_fixer || issues_found=true
|
|
run_phpstan || issues_found=true
|
|
validate_composer_files || issues_found=true
|
|
run_phplint || issues_found=true
|
|
run_phpunit || issues_found=true
|
|
|
|
local end_time=$(date +%s)
|
|
local duration=$((end_time - start_time))
|
|
|
|
# Summary
|
|
echo -e "${BOLD}${CYAN}Quality Check Summary${RESET}"
|
|
if [ "$issues_found" = true ]; then
|
|
echo -e "${WARNING} ${YELLOW}Quality check completed with issues${RESET}"
|
|
else
|
|
echo -e "${SPARKLES} ${GREEN}All quality checks passed successfully${RESET}"
|
|
fi
|
|
echo -e "Duration : ${YELLOW}${duration}s${RESET}\n"
|
|
|
|
echo -e "${SPARKLES} ${BOLD}Quality Check Complete${RESET}"
|
|
echo -e "${CHECK} All checks finished\n"
|
|
|
|
# We don't exit with error code because the original task continues despite failures
|
|
exit 0
|
|
}
|
|
|
|
main
|