From: Michael Wallner Date: Thu, 28 Jun 2018 08:20:38 +0000 (+0200) Subject: preserve file permissions X-Git-Tag: v4.1.2~5 X-Git-Url: https://git.m6w6.name/?a=commitdiff_plain;h=686017f7a73f9dc9eba2c446db772824e843333b;p=pharext%2Fpharext preserve file permissions --- diff --git a/src/pharext/Task/PharBuild.php b/src/pharext/Task/PharBuild.php index d2c06be..181b8ef 100644 --- a/src/pharext/Task/PharBuild.php +++ b/src/pharext/Task/PharBuild.php @@ -69,32 +69,33 @@ class PharBuild implements Task (new PharStub($phar, $this->stub))->run($verbose); } - $phar->buildFromIterator((new Task\BundleGenerator)->run()); + $phar->buildFromIterator((new Task\BundleGenerator)->run($verbose)); if ($this->source) { - if ($verbose) { - $bdir = $this->source->getBaseDir(); - $blen = strlen($bdir); - foreach ($this->source as $index => $file) { - if (is_resource($file)) { - printf("Packaging %s ...\n", $index); - $phar[$index] = $file; - } else { - printf("Packaging %s ...\n", $index = trim(substr($file, $blen), "/")); - $phar->addFile($file, $index); - } + $bdir = $this->source->getBaseDir(); + $blen = strlen($bdir); + foreach ($this->source as $index => $file) { + if (is_resource($file)) { + $mode = fstat($file)["mode"] & 07777; + $phar[$index] = $file; + } else { + $mode = stat($file)["mode"] & 07777; + $index = trim(substr($file, $blen), "/"); + $phar->addFile($file, $index); } - } else { - $phar->buildFromIterator($this->source, $this->source->getBaseDir()); + if ($verbose) { + printf("Packaging %04o %s ...\n", $mode, $index); + } + $phar[$index]->chmod($mode); } } $phar->stopBuffering(); - + if (!chmod($temp, fileperms($temp) | 0111)) { throw new Exception; } - + return $temp; } -} \ No newline at end of file +}