Merge pull request #18489 from eileenmcnaughton/im
[civicrm-core.git] / ext / afform / html / bin / add-zip-regex.php
CommitLineData
0b6a4df8
TO
1#!/usr/bin/php
2<?php
3
4## This script allows you to add to a ZIP file -- while filtering the filename.
5## For example, suppose you want to inject a prefix to put everything in a subdir;
6## match the start of the name (^) and put in the new sub dir:
7##
8## find -type f | add-zip-regex.php myfile.zip :^: 'the-new-sub-dir/'
9
10if (PHP_SAPI !== 'cli') {
11 die("This tool can only be run from command line.");
12}
13
14if (empty($argv[1]) || empty($argv[2])) {
15 die(sprintf("usage: cat files.txt | %s <zipfile> <old-prefix> <new-prefix>\n", $argv[0]));
16}
17
18$zip = new ZipArchive();
19$zip->open($argv[1], ZipArchive::CREATE);
20$zip->addEmptyDir($argv[3]);
21
22$files = explode("\n", file_get_contents('php://stdin'));
23foreach ($files as $file) {
24 if (empty($file)) {
25 continue;
26 }
27 $file = preg_replace(':^\./:', '', $file);
28 $internalName = preg_replace($argv[2], $argv[3], $file);
29 if (file_exists($file) && is_dir($file)) {
30 $zip->addEmptyDir($internalName);
31 }
32 else {
33 $zip->addFile($file, $internalName);
34 }
35}
36
37$zip->close();