90 lines
2.6 KiB
Bash
Executable File
90 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
#
|
|
# Extract Build Configuration
|
|
#
|
|
# Extracts configuration from:
|
|
# - .github/workflows/*.yml (GitHub Actions)
|
|
# - .gitlab-ci.yml (GitLab CI)
|
|
# - phpunit.xml (PHPUnit config)
|
|
# - phpstan.neon (PHPStan config)
|
|
#
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
# Configuration
|
|
PROJECT_DIR="$(pwd)"
|
|
DATA_DIR="${PROJECT_DIR}/.claude/docs-extraction/data"
|
|
OUTPUT_FILE="${DATA_DIR}/build_configs.json"
|
|
|
|
mkdir -p "${DATA_DIR}"
|
|
|
|
echo "Extracting build configurations..."
|
|
|
|
# Start JSON
|
|
echo '{' > "${OUTPUT_FILE}"
|
|
echo ' "extraction_date": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'",' >> "${OUTPUT_FILE}"
|
|
|
|
# GitHub Actions
|
|
if [ -d "${PROJECT_DIR}/.github/workflows" ]; then
|
|
workflow_files=$(find "${PROJECT_DIR}/.github/workflows" -name "*.yml" -o -name "*.yaml" 2>/dev/null || true)
|
|
if [ -n "$workflow_files" ]; then
|
|
echo ' "github_actions": {' >> "${OUTPUT_FILE}"
|
|
echo ' "exists": true,' >> "${OUTPUT_FILE}"
|
|
echo ' "files": [' >> "${OUTPUT_FILE}"
|
|
first=true
|
|
for wf in $workflow_files; do
|
|
if [ "$first" = false ]; then echo ' ,' >> "${OUTPUT_FILE}"; fi
|
|
first=false
|
|
rel_path="${wf#$PROJECT_DIR/}"
|
|
echo ' "'${rel_path}'"' >> "${OUTPUT_FILE}"
|
|
done
|
|
echo ' ]' >> "${OUTPUT_FILE}"
|
|
echo ' },' >> "${OUTPUT_FILE}"
|
|
else
|
|
echo ' "github_actions": { "exists": false },' >> "${OUTPUT_FILE}"
|
|
fi
|
|
else
|
|
echo ' "github_actions": { "exists": false },' >> "${OUTPUT_FILE}"
|
|
fi
|
|
|
|
# GitLab CI
|
|
if [ -f "${PROJECT_DIR}/.gitlab-ci.yml" ]; then
|
|
echo ' "gitlab_ci": { "exists": true, "file": ".gitlab-ci.yml" },' >> "${OUTPUT_FILE}"
|
|
else
|
|
echo ' "gitlab_ci": { "exists": false },' >> "${OUTPUT_FILE}"
|
|
fi
|
|
|
|
# PHPUnit
|
|
phpunit_files=$(find "${PROJECT_DIR}" -maxdepth 2 -name "phpunit.xml*" 2>/dev/null || true)
|
|
if [ -n "$phpunit_files" ]; then
|
|
echo ' "phpunit": { "exists": true, "files": [' >> "${OUTPUT_FILE}"
|
|
first=true
|
|
for pf in $phpunit_files; do
|
|
if [ "$first" = false ]; then echo ' ,' >> "${OUTPUT_FILE}"; fi
|
|
first=false
|
|
rel_path="${pf#$PROJECT_DIR/}"
|
|
echo ' "'${rel_path}'"' >> "${OUTPUT_FILE}"
|
|
done
|
|
echo ' ] },' >> "${OUTPUT_FILE}"
|
|
else
|
|
echo ' "phpunit": { "exists": false },' >> "${OUTPUT_FILE}"
|
|
fi
|
|
|
|
# PHPStan
|
|
if [ -f "${PROJECT_DIR}/phpstan.neon" ] || [ -f "${PROJECT_DIR}/phpstan.neon.dist" ]; then
|
|
echo ' "phpstan": { "exists": true }' >> "${OUTPUT_FILE}"
|
|
else
|
|
echo ' "phpstan": { "exists": false }' >> "${OUTPUT_FILE}"
|
|
fi
|
|
|
|
# Close JSON
|
|
echo '}' >> "${OUTPUT_FILE}"
|
|
|
|
echo -e "${GREEN}✓ Build configs extracted: ${OUTPUT_FILE}${NC}"
|