* @param int $compression
* @return CommandLine
*/
- public static function archive($source, $zip, $compression = 0)
+ public static function archive($source, $zip, $compression = 0, $keepSymbolicLinks = true)
{
$zipexe = 'zip';
$dir = dirname($zip);
Files::mkdir($dir);
-
- if (!is_numeric($compression)) {
- $compression = 0;
- }
- $compression = round($compression);
- $compression = max(0, min(9, $compression));
-
$cl = new CommandLine($zipexe);
+ $cl->setArg(max(0, min(9, round($compression))));
if (is_array($source)) {
- $cl->setArg($compression);
+
$cl->setArg('j');
$cl->setArg(null, $zip);
foreach ($source as $item) {
$cl->setArg(null, $zip);
$cl->setArg(null, '*');
}
+ if ($keepSymbolicLinks) {
+ $cl->setArg('symlinks');
+ }
$cl->execute();
return $cl;
}