#!/usr/bin/env php open($zipPath, ZipArchive::CREATE) !== true) { echo 'Can\'t open zip file.' . PHP_EOL; exit(1); } $files = new CallbackFilterIterator( new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($pluginRootDir) ), function (SplFileInfo $fileInfo) { return $fileInfo->isFile(); } ); $ignoredFiles = [ 'ucrm.json', '.ucrm-plugin-running', '.ucrm-plugin-execution-requested', $zipName, ]; $ignoredDirectories = [ '.git/', '.idea/', ]; /** @var SplFileInfo $fileInfo */ foreach ($files as $fileInfo) { $filename = substr(str_replace('\\', '/', $fileInfo->getPathname()), strlen($pluginRootDir)); $filename = ltrim($filename, '/'); if (in_array($filename, $ignoredFiles, true)) { echo sprintf('Skipping ignored file "%s".', $filename) . PHP_EOL; continue; } foreach ($ignoredDirectories as $ignoredDirectory) { if (strncmp($filename, $ignoredDirectory, strlen($ignoredDirectory)) === 0) { echo sprintf('Skipping ignored file "%s".', $filename) . PHP_EOL; continue 2; } } if (! $zip->addFile($fileInfo->getPathname(), $filename)) { echo sprintf('Unable to add file "%s".', $filename) . PHP_EOL; exit(1); } } $zip->close(); echo sprintf('Created plugin ZIP archive: "%s"', realpath($zipPath)) . PHP_EOL;