diff --git a/API.md b/API.md index 9d802b4..0bdcbb8 100644 --- a/API.md +++ b/API.md @@ -125,8 +125,8 @@ curl -i -X POST \ - Auth: Required - Purpose: Initialize a series configuration by writing a JSON file into `BUILDS_DIRECTORY/series`. - Request body (JSON): - - `series` (string, required) - - `series_vs` (string, required): Matches `^v[c|s]\d{2}$`. + - `php_version` (string, required): Matches `^\d+.\d+$`. + - `source_vs` (string, required): Matches `^v[c|s]\d{2}$`. - `target_vs` (string, required): Matches `^v[c|s]\d{2}$`. - Success: `200 OK`, empty body. - Errors: `400` with validation details if input is invalid. @@ -138,8 +138,8 @@ curl -i -X POST \ -H "Authorization: Bearer $AUTH_TOKEN" \ -H "Content-Type: application/json" \ -d '{ - "series": "8.4", - "series_vs": "vc15", + "php_version": "8.4", + "source_vs": "vc15", "target_vs": "vs16" }' \ https://downloads.php.net/api/series-init diff --git a/src/Console/Command/SeriesInitCommand.php b/src/Console/Command/SeriesInitCommand.php index 6d6405d..0668e57 100644 --- a/src/Console/Command/SeriesInitCommand.php +++ b/src/Console/Command/SeriesInitCommand.php @@ -46,7 +46,7 @@ public function handle(): int foreach ($filteredFiles as $filepath) { $data = json_decode(file_get_contents($filepath), true, 512, JSON_THROW_ON_ERROR); extract($data); - $this->initSeriesFiles($series, $series_vs, $target_vs); + $this->initSeriesFiles($php_version, $source_vs, $target_vs); unlink($filepath); unlink($filepath . '.lock'); } @@ -61,8 +61,8 @@ public function handle(): int * @throws Exception */ private function initSeriesFiles( - string $series, - string $series_vs, + string $php_version, + string $source_vs, string $target_vs ): void { @@ -73,11 +73,14 @@ private function initSeriesFiles( } foreach(['x86', 'x64'] as $arch) { foreach(['stable', 'staging'] as $stability) { - $sourceSeries = 'packages-master-' . $series_vs . '-' . $arch . '-' . $stability . '.txt'; + $sourceSeries = 'packages-master-' . $source_vs . '-' . $arch . '-' . $stability . '.txt'; if(!file_exists($baseDirectory . '/' . $sourceSeries)) { throw new Exception("$baseDirectory/$sourceSeries not found"); } - $destinationFileName = 'packages-' . $series . '-' . $target_vs . '-' . $arch . '-' . $stability . '.txt'; + $destinationFileName = 'packages-' . $php_version . '-' . $target_vs . '-' . $arch . '-' . $stability . '.txt'; + if(file_exists($baseDirectory . '/' . $destinationFileName)) { + throw new Exception("$baseDirectory/$destinationFileName already exists"); + } copy($baseDirectory . '/' . $sourceSeries, $baseDirectory . '/' . $destinationFileName); } } diff --git a/src/Http/Controllers/SeriesInitController.php b/src/Http/Controllers/SeriesInitController.php index c40d25e..8fa4d7f 100644 --- a/src/Http/Controllers/SeriesInitController.php +++ b/src/Http/Controllers/SeriesInitController.php @@ -10,8 +10,8 @@ class SeriesInitController extends BaseController protected function validate(array $data): bool { $validator = new Validator([ - 'series' => 'required|string', - 'series_vs' => 'required|string|regex:/^v[c|s]\d{2}$/', + 'php_version' => 'required|string:regex:/^\d+\.\d+$/', + 'source_vs' => 'required|string|regex:/^v[c|s]\d{2}$/', 'target_vs' => 'required|string|regex:/^v[c|s]\d{2}$/', ]);