[web-downloads] main: Cleanup zip files on empty ref in SeriesUpdateCommand

From: Date: Thu, 20 Nov 2025 03:33:50 +0000
Subject: [web-downloads] main: Cleanup zip files on empty ref in SeriesUpdateCommand
Groups: php.webmaster 
Request: Send a blank email to php-webmaster+get-33375@lists.php.net to get a copy of this message
Author: Shivam Mathur (shivammathur) Date: 2025-11-20T09:03:41+05:30 Commit: https://github.com/php/web-downloads/commit/f764a52931c9abf544f5622f99287b4f7dd32acb Raw diff: https://github.com/php/web-downloads/commit/f764a52931c9abf544f5622f99287b4f7dd32acb.diff Cleanup zip files on empty ref in SeriesUpdateCommand Changed paths: M src/Console/Command/SeriesUpdateCommand.php M tests/Console/Command/SeriesUpdateCommandTest.php Diff: diff --git a/src/Console/Command/SeriesUpdateCommand.php b/src/Console/Command/SeriesUpdateCommand.php index e72ba8f..3d4ff0a 100644 --- a/src/Console/Command/SeriesUpdateCommand.php +++ b/src/Console/Command/SeriesUpdateCommand.php @@ -131,12 +131,34 @@ private function updateSeriesFiles( if (file_exists($filePath)) { unlink($filePath); } + if ($package === null) { + $this->deleteLibraryArtifacts($vsVersion, $arch, $library); + } continue; } $tmpFile = $filePath . '.tmp'; file_put_contents($tmpFile, implode("\n", $lines), LOCK_EX); rename($tmpFile, $filePath); + + if ($package === null) { + $this->deleteLibraryArtifacts($vsVersion, $arch, $library); + } + } + } + + private function deleteLibraryArtifacts(string $vsVersion, string $arch, string $library): void + { + $artifactDir = $this->baseDirectory . '/php-sdk/deps/' . $vsVersion . '/' . $arch; + if (!is_dir($artifactDir)) { + return; + } + + $pattern = $artifactDir . '/' . $library . '-*'; + foreach (glob($pattern) as $file) { + if (is_file($file)) { + unlink($file); + } } } } \ No newline at end of file diff --git a/tests/Console/Command/SeriesUpdateCommandTest.php b/tests/Console/Command/SeriesUpdateCommandTest.php index c419fde..011126f 100644 --- a/tests/Console/Command/SeriesUpdateCommandTest.php +++ b/tests/Console/Command/SeriesUpdateCommandTest.php @@ -136,6 +136,15 @@ public function testRemovesLibraryWhenNoPackageProvided(): void 'libzip-1.9.1-vs17-x64.zip', ])); + $depsX86 = $this->baseDirectory . '/php-sdk/deps/vs17/x86'; + $depsX64 = $this->baseDirectory . '/php-sdk/deps/vs17/x64'; + mkdir($depsX86, 0755, true); + mkdir($depsX64, 0755, true); + file_put_contents($depsX86 . '/libzip-1.9.1.zip', 'x86 artifact'); + file_put_contents($depsX64 . '/libzip-1.9.1.zip', 'x64 artifact'); + file_put_contents($depsX86 . '/curl-7.88.0.zip', 'keep x86'); + file_put_contents($depsX64 . '/curl-7.88.0.zip', 'keep x64'); + $this->createTask([ 'php_version' => '8.1', 'vs_version' => 'vs17', @@ -157,6 +166,11 @@ public function testRemovesLibraryWhenNoPackageProvided(): void $x64Lines = file($filePathX64, FILE_IGNORE_NEW_LINES); $this->assertSame(['curl-7.88.0-vs17-x64.zip'], $x64Lines); + + $this->assertFileDoesNotExist($depsX86 . '/libzip-1.9.1.zip'); + $this->assertFileDoesNotExist($depsX64 . '/libzip-1.9.1.zip'); + $this->assertFileExists($depsX86 . '/curl-7.88.0.zip'); + $this->assertFileExists($depsX64 . '/curl-7.88.0.zip'); } public function testCreatesSeriesFileWhenMissing(): void

« previous php.webmaster (#33375) next »