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

[email protected] (Shivam Mathur)
Newsgroups php.webmaster
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.