Skip to content

Commit f3ac20e

Browse files
committed
feat(validation): add OpenAPI validation script and project validation script
- Introduced `validate_openapi.sh` to check OpenAPI/Swagger resources, ensuring proper functionality and documentation. - Added `validate_project.php` to perform comprehensive validation of the project structure, dependencies, and documentation. - Enhanced error handling in middleware classes by throwing `HttpException` for better response management. - Updated tests for authentication middleware to expect `HttpException` on failure.
1 parent 676225a commit f3ac20e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+649
-461
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: CI/CD Pipeline
22

33
# Optimized CI/CD using consolidated scripts with automatic version detection
4-
# Multi-PHP testing available locally via: ./scripts/test-all-php-versions.sh
4+
# Multi-PHP testing available locally via: ./scripts/testing/test-all-php-versions.sh
55

66
on:
77
push:
@@ -47,8 +47,8 @@ jobs:
4747
run: |
4848
echo "🔍 Running consolidated quality validation..."
4949
echo "📋 Using automatic version detection from VERSION file"
50-
echo "💡 Multi-PHP testing done locally via: ./scripts/test-all-php-versions.sh"
51-
scripts/quality-check.sh || { echo 'Quality check failed'; exit 1; }
50+
echo "💡 Multi-PHP testing done locally via: ./scripts/testing/test-all-php-versions.sh"
51+
scripts/quality/quality-check.sh || { echo 'Quality check failed'; exit 1; }
5252
5353
- name: Upload coverage to Codecov
5454
uses: codecov/codecov-action@v4
@@ -70,8 +70,8 @@ jobs:
7070
echo "🔍 Used consolidated scripts with auto-version detection"
7171
echo ""
7272
echo "📋 For comprehensive testing:"
73-
echo " • Multi-PHP: ./scripts/test-all-php-versions.sh (PHP 8.1-8.4)"
74-
echo " • Full validation: ./scripts/validate_all.sh"
75-
echo " • Version management: ./scripts/version-bump.sh"
73+
echo " • Multi-PHP: ./scripts/testing/test-all-php-versions.sh (PHP 8.1-8.4)"
74+
echo " • Full validation: ./scripts/validation/validate_all.sh"
75+
echo " • Version management: ./scripts/release/version-bump.sh"
7676
echo ""
7777
echo "🚀 CI/CD optimized for speed - extensive testing done locally"

.github/workflows/pre-release.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ on:
66
push:
77
branches: [ main ]
88

9+
permissions:
10+
contents: read
11+
issues: write
12+
pull-requests: write
13+
914
jobs:
1015
pre-release-validation:
1116
runs-on: ubuntu-latest
@@ -42,13 +47,13 @@ jobs:
4247
- name: Run release preparation script
4348
run: |
4449
echo "🚀 Running automated release preparation..."
45-
chmod +x scripts/prepare_release.sh
46-
echo "n\nn\nn" | scripts/prepare_release.sh
50+
chmod +x scripts/release/prepare_release.sh
51+
echo "n\nn\nn" | scripts/release/prepare_release.sh
4752
4853
- name: Run project validation
4954
run: |
5055
echo "📋 Running comprehensive project validation..."
51-
php scripts/validate_project.php
56+
php scripts/validation/validate_project.php
5257
5358
- name: Check for security vulnerabilities
5459
run: composer audit --no-dev

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ jobs:
4444
run: |
4545
echo "🚀 Running comprehensive validation for release..."
4646
echo "📋 Using consolidated quality check with auto-version detection"
47-
scripts/quality-check.sh
47+
scripts/quality/quality-check.sh
4848
4949
- name: Prepare release validation
5050
run: |
5151
echo "📦 Running release preparation validation..."
52-
chmod +x scripts/prepare_release.sh
53-
scripts/prepare_release.sh
52+
chmod +x scripts/release/prepare_release.sh
53+
scripts/release/prepare_release.sh
5454
5555
release:
5656
needs: validate

CHANGELOG.md

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,41 @@ All notable changes to the PivotPHP Framework will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [1.1.4] - 2025-07-14
8+
## [1.1.4] - 2025-07-15
99

1010
### 🔧 **Infrastructure Consolidation & Automation Edition**
1111

12-
> **Script Infrastructure Overhaul**: Complete consolidation of script ecosystem with 40% reduction (25 → 15 scripts), automatic version detection via mandatory VERSION file, GitHub Actions optimization, and comprehensive versioning documentation while maintaining 100% backward compatibility and zero impact on framework performance.
12+
> **Script Infrastructure Overhaul**: Complete consolidation and reorganization of script ecosystem with logical organization in subfolders, 40% reduction (25 → 15 scripts), automatic version detection via mandatory VERSION file, GitHub Actions optimization, and comprehensive versioning documentation while maintaining 100% backward compatibility and zero impact on framework performance.
13+
14+
#### 📁 **Script Organization & Structure**
15+
- **Logical Subfolder Organization**: Scripts organized by functionality for better maintainability
16+
```
17+
scripts/
18+
├── validation/ # Validation scripts (validate_all.sh, validate-docs.sh, etc.)
19+
├── quality/ # Quality checks (quality-check.sh, validate-psr12.php)
20+
├── release/ # Release management (prepare_release.sh, version-bump.sh)
21+
├── testing/ # Testing scripts (test-all-php-versions.sh, run_stress_tests.sh)
22+
└── utils/ # Utilities (version-utils.sh, switch-psr7-version.php)
23+
```
24+
- **Comprehensive Documentation**: README files in each subfolder with usage examples
25+
- **Backward Compatibility**: All existing script names preserved, only location changed
26+
- **Updated Integrations**: GitHub Actions workflows, composer.json, and documentation updated
1327

1428
#### 🔧 **Script Infrastructure Consolidation**
1529
- **40% Script Reduction**: Consolidated from 25 to 15 scripts, eliminating duplication
1630
- **Removed Scripts**: 10 duplicate/obsolete scripts eliminated
17-
- `quality-check-v114.sh` → Hardcoded version, consolidated into `quality-check.sh`
18-
- `validate_all_v114.sh` → Hardcoded version, consolidated into `validate_all.sh`
31+
- `quality-check-v114.sh` → Hardcoded version, consolidated into `scripts/quality/quality-check.sh`
32+
- `validate_all_v114.sh` → Hardcoded version, consolidated into `scripts/validation/validate_all.sh`
1933
- `quick-quality-check.sh` → Duplicate functionality integrated
20-
- `simple_pre_release.sh` → Replaced by enhanced `prepare_release.sh`
21-
- `quality-gate.sh` → Functionality consolidated into `quality-check.sh`
22-
- `quality-metrics.sh` → Functionality consolidated into `quality-check.sh`
23-
- `test-php-versions-quick.sh` → Replaced by `test-all-php-versions.sh`
24-
- `ci-validation.sh` → Functionality consolidated into `quality-check.sh`
34+
- `simple_pre_release.sh` → Replaced by enhanced `scripts/release/prepare_release.sh`
35+
- `quality-gate.sh` → Functionality consolidated into `scripts/quality/quality-check.sh`
36+
- `quality-metrics.sh` → Functionality consolidated into `scripts/quality/quality-check.sh`
37+
- `test-php-versions-quick.sh` → Replaced by `scripts/testing/test-all-php-versions.sh`
38+
- `ci-validation.sh` → Functionality consolidated into `scripts/quality/quality-check.sh`
2539
- `setup-precommit.sh` → One-time setup script, no longer needed
2640
- `adapt-psr7-v1.php` → Specific utility script removed for simplicity
2741

28-
- **Shared Utility Library**: Created `scripts/lib/version-utils.sh` with common functions
42+
- **Shared Utility Library**: Created `scripts/utils/version-utils.sh` with common functions
2943
- `get_version()` - Automatic version detection from VERSION file
3044
- `get_project_root()` - Project root directory detection
3145
- `validate_project_context()` - PivotPHP Core context validation
@@ -38,15 +52,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3852
- **Strict Validation**: Scripts fail immediately if VERSION file missing or invalid
3953
- **Portuguese Error Messages**: Clear error messages for better developer experience
4054

41-
- **Enhanced Version Management**: New `scripts/version-bump.sh` with automation
55+
- **Enhanced Version Management**: New `scripts/release/version-bump.sh` with automation
4256
```bash
4357
# Semantic version management
44-
scripts/version-bump.sh patch # 1.1.4 → 1.1.5
45-
scripts/version-bump.sh minor # 1.1.4 → 1.2.0
46-
scripts/version-bump.sh major # 1.1.4 → 2.0.0
58+
scripts/release/version-bump.sh patch # 1.1.4 → 1.1.5
59+
scripts/release/version-bump.sh minor # 1.1.4 → 1.2.0
60+
scripts/release/version-bump.sh major # 1.1.4 → 2.0.0
4761

4862
# Preview mode
49-
scripts/version-bump.sh minor --dry-run
63+
scripts/release/version-bump.sh minor --dry-run
5064
```
5165
- **Git Integration**: Automatic commit and tag creation
5266
- **Composer Integration**: Updates composer.json if present
@@ -108,13 +122,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
108122
- **Simplified Commands**: Single entry points for complex operations
109123
```bash
110124
# Quality validation (replaces multiple scripts)
111-
scripts/quality-check.sh
125+
scripts/quality/quality-check.sh
112126

113127
# Complete validation
114-
scripts/validate_all.sh
128+
scripts/validation/validate_all.sh
115129

116130
# Release preparation
117-
scripts/prepare_release.sh
131+
scripts/release/prepare_release.sh
118132
```
119133

120134
- **Improved Developer Experience**:
@@ -800,7 +814,7 @@ OptimizedHttpFactory::initialize([
800814
- **Backward Compatibility**: All v1.0.0 routes continue to work
801815
- **PSR-7 Dual Version Support**: Full compatibility with both PSR-7 v1.x and v2.x
802816
- Automatic version detection via `Psr7VersionDetector`
803-
- Script to switch between versions: `scripts/switch-psr7-version.php`
817+
- Script to switch between versions: `scripts/utils/switch-psr7-version.php`
804818
- Enables ReactPHP integration with PSR-7 v1.x
805819
- Maintains type safety with PSR-7 v2.x
806820

CLAUDE.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ PivotPHP Core is a high-performance PHP microframework inspired by Express.js, d
1111
### Development Workflow
1212
```bash
1313
# Run comprehensive validation (includes all checks)
14-
./scripts/validate_all.sh
14+
./scripts/validation/validate_all.sh
1515

1616
# Multi-PHP version testing (RECOMMENDED for releases)
1717
composer docker:test-all # Test all PHP versions (8.1-8.4) via Docker
@@ -46,16 +46,16 @@ vendor/bin/phpunit --testsuite=Unit # Unit tests only
4646
vendor/bin/phpunit --testsuite=Fast # Fast tests (excludes stress)
4747

4848
# Additional validation commands
49-
php ./scripts/validate-psr12.php # PSR-12 validation (standalone)
50-
php ./scripts/switch-psr7-version.php --check # Check PSR-7 version
49+
php ./scripts/quality/validate-psr12.php # PSR-12 validation (standalone)
50+
php ./scripts/utils/switch-psr7-version.php --check # Check PSR-7 version
5151

5252
# Pre-commit and release
5353
./scripts/pre-commit # Run pre-commit validations
54-
./scripts/prepare_release.sh 1.1.3 # Prepare release for version 1.1.3
55-
./scripts/release.sh # Create release after preparation
54+
./scripts/release/prepare_release.sh 1.1.3 # Prepare release for version 1.1.3
55+
./scripts/release/release.sh # Create release after preparation
5656

5757
# Quality validation (recommended before commits)
58-
./scripts/quality-check.sh # Comprehensive quality validation (uses CI tests)
58+
./scripts/quality/quality-check.sh # Comprehensive quality validation (uses CI tests)
5959
./scripts/pre-push # Pre-push validation (includes integration tests)
6060

6161
# CI/CD specific commands
@@ -266,11 +266,11 @@ $app->get('/users', 'UserController@index'); // TypeError!
266266

267267
## Development Workflow
268268

269-
1. Before committing, run `./scripts/pre-commit` or `./scripts/validate_all.sh`
269+
1. Before committing, run `./scripts/pre-commit` or `./scripts/validation/validate_all.sh`
270270
2. All tests must pass before pushing changes
271271
3. Static analysis must pass at Level 9
272272
4. Code style must comply with PSR-12
273-
5. For releases, use `./scripts/prepare_release.sh` followed by `./scripts/release.sh`
273+
5. For releases, use `./scripts/release/prepare_release.sh` followed by `./scripts/release/release.sh`
274274

275275
### Array Callable Testing (v1.1.4)
276276
When implementing array callable routes, verify compatibility:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,7 @@ php scripts/switch-psr7-version.php 2
577577
composer update
578578

579579
# Validar o projeto
580-
./scripts/validate_all.sh
580+
./scripts/validation/validate_all.sh
581581
```
582582

583583
Veja a [documentação completa sobre PSR-7](docs/technical/compatibility/psr7-dual-support.md) para mais detalhes.

composer.json

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,7 @@
133133
"@phpstan",
134134
"@test"
135135
],
136-
"fix:psr12-lines": "./scripts/fix-psr12-lines.sh",
137-
"precommit:install": "./scripts/setup-precommit.sh",
136+
"precommit:install": "./scripts/utils/setup-precommit.sh",
138137
"precommit:test": "./scripts/pre-commit",
139138
"prepush:validate": [
140139
"@phpstan",
@@ -147,8 +146,8 @@
147146
"@test",
148147
"@cs:check"
149148
],
150-
"validate:docs": "./scripts/validate-docs.sh",
151-
"validate:project": "php scripts/validate_project.php",
149+
"validate:docs": "./scripts/validation/validate-docs.sh",
150+
"validate:project": "php scripts/validation/validate_project.php",
152151
"examples:basic": "php examples/example_basic.php",
153152
"examples:auth": "php examples/example_auth.php",
154153
"examples:auth-simple": "php examples/example_auth_simple.php",
@@ -165,11 +164,11 @@
165164
"benchmark": "./benchmarks/run_benchmark.sh",
166165
"benchmark:quick": "./benchmarks/run_benchmark.sh -q",
167166
"benchmark:simple": "php benchmarks/SimpleBenchmark.php",
168-
"docker:test-all": "./scripts/test-all-php-versions.sh",
169-
"docker:test-quality": "./scripts/test-all-php-versions.sh --with-quality",
170-
"ci:validate": "./scripts/ci-validation.sh",
171-
"quality:gate": "./scripts/quality-gate.sh",
172-
"quality:metrics": "./scripts/quality-metrics.sh"
167+
"docker:test-all": "./scripts/testing/test-all-php-versions.sh",
168+
"docker:test-quality": "./scripts/testing/test-all-php-versions.sh --with-quality",
169+
"ci:validate": "./scripts/quality/quality-check.sh",
170+
"quality:gate": "./scripts/quality/quality-check.sh",
171+
"quality:metrics": "./scripts/quality/quality-check.sh"
173172
},
174173
"config": {
175174
"optimize-autoloader": true,

docs/MIGRATION_GUIDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
- [ ] **Test consolidated scripts** work correctly
3232

3333
#### ✅ Recommended Actions:
34-
- [ ] **Use consolidated scripts** (`scripts/quality-check.sh`)
35-
- [ ] **Adopt automatic versioning** (`scripts/version-bump.sh`)
34+
- [ ] **Use consolidated scripts** (`scripts/quality/quality-check.sh`)
35+
- [ ] **Adopt automatic versioning** (`scripts/release/version-bump.sh`)
3636
- [ ] **Read versioning guide** ([docs/VERSIONING_GUIDE.md](VERSIONING_GUIDE.md))
3737

3838
### 📖 Additional Resources

docs/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ Welcome to the complete documentation for **PivotPHP Core v1.1.4** - a high-perf
4646
Complete infrastructure optimization and automation:
4747
```bash
4848
# Scripts reduced from 25 to 15 (40% reduction)
49-
scripts/quality-check.sh # Consolidated validation
50-
scripts/version-bump.sh # Automatic version management
49+
scripts/quality/quality-check.sh # Consolidated validation
50+
scripts/release/version-bump.sh # Automatic version management
5151
```
5252

5353
### 📦 **Automatic Version Management**

docs/VERSIONING_GUIDE.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,22 +113,22 @@ O PivotPHP Core inclui um script automatizado para gerenciar versões:
113113

114114
```bash
115115
# Incrementar PATCH (1.1.4 → 1.1.5)
116-
scripts/version-bump.sh patch
116+
scripts/release/version-bump.sh patch
117117

118118
# Incrementar MINOR (1.1.4 → 1.2.0)
119-
scripts/version-bump.sh minor
119+
scripts/release/version-bump.sh minor
120120

121121
# Incrementar MAJOR (1.1.4 → 2.0.0)
122-
scripts/version-bump.sh major
122+
scripts/release/version-bump.sh major
123123

124124
# Visualizar próxima versão sem aplicar
125-
scripts/version-bump.sh minor --dry-run
125+
scripts/release/version-bump.sh minor --dry-run
126126

127127
# Fazer bump sem criar commit/tag
128-
scripts/version-bump.sh patch --no-commit
128+
scripts/release/version-bump.sh patch --no-commit
129129

130130
# Fazer bump sem criar tag (mas com commit)
131-
scripts/version-bump.sh minor --no-tag
131+
scripts/release/version-bump.sh minor --no-tag
132132
```
133133

134134
### O que o Script Faz Automaticamente:
@@ -145,7 +145,7 @@ scripts/version-bump.sh minor --no-tag
145145

146146
```bash
147147
# Cenário: Correção de bug de segurança
148-
$ scripts/version-bump.sh patch
148+
$ scripts/release/version-bump.sh patch
149149

150150
ℹ️ Versão atual: 1.1.4
151151
ℹ️ Nova versão: 1.1.5
@@ -180,7 +180,7 @@ Confirma o bump de 1.1.4 para 1.1.5? (y/N): y
180180
- [ ] Cobertura de testes ≥30% (`composer test:coverage`)
181181
- [ ] Testes de segurança passando (`composer test:security`)
182182
- [ ] Performance ≥30K ops/sec (`composer benchmark`)
183-
- [ ] Validação completa (`scripts/quality-check.sh`)
183+
- [ ] Validação completa (`scripts/quality/quality-check.sh`)
184184

185185
#### ✅ Documentação:
186186
- [ ] CHANGELOG.md atualizado
@@ -249,13 +249,13 @@ git checkout main
249249
git merge feature/new-middleware
250250

251251
# Execute validações
252-
scripts/quality-check.sh
252+
scripts/quality/quality-check.sh
253253
```
254254

255255
### 3. Versionamento
256256
```bash
257257
# Para nova funcionalidade (MINOR)
258-
scripts/version-bump.sh minor
258+
scripts/release/version-bump.sh minor
259259

260260
# Resultado: 1.1.4 → 1.2.0
261261
```
@@ -279,9 +279,9 @@ git push origin main --tags
279279
- [Contributing Guidelines](../CONTRIBUTING.md)
280280

281281
### Scripts Relacionados:
282-
- `scripts/version-bump.sh` - Gerenciamento de versões
283-
- `scripts/prepare_release.sh` - Preparação para release
284-
- `scripts/quality-check.sh` - Validação de qualidade
282+
- `scripts/release/version-bump.sh` - Gerenciamento de versões
283+
- `scripts/release/prepare_release.sh` - Preparação para release
284+
- `scripts/quality/quality-check.sh` - Validação de qualidade
285285

286286
### Comunidade:
287287
- [Discord PivotPHP](https://discord.gg/DMtxsP7z)

0 commit comments

Comments
 (0)