From d5c20b6c009b04e29828387ad31772493266a5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Zima?= Date: Mon, 18 Jul 2022 14:26:06 +0200 Subject: [PATCH] Added option to ignore files/folders on remote side --- readme.md | 3 +++ src/Deployment/CliRunner.php | 2 ++ src/Deployment/Deployer.php | 10 +++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index af39f41..0ea9b8e 100644 --- a/readme.md +++ b/readme.md @@ -79,6 +79,9 @@ ignore = " !temp/.htaccess " +; if no, ignore section will be taken into account on remote side (default is yes) +ignoreRemote = yes + ; explicit list of files and directories to include (by default includes all files and directories) include = " /app diff --git a/src/Deployment/CliRunner.php b/src/Deployment/CliRunner.php index b98b61c..f9cf4fc 100644 --- a/src/Deployment/CliRunner.php +++ b/src/Deployment/CliRunner.php @@ -21,6 +21,7 @@ class CliRunner 'passivemode' => true, 'include' => '', 'ignore' => '', + 'ignoreremote' => true, 'allowdelete' => true, 'purge' => '', 'before' => '', @@ -169,6 +170,7 @@ private function createDeployer(array $config): Deployer ? $deployment->deploymentFile : $config['deploymentfile']; $deployment->allowDelete = (bool) $config['allowdelete']; + $deployment->ignoreRemote = (bool) $config['ignoreremote']; $deployment->toPurge = self::toArray($config['purge'], true); $deployment->runBefore = self::toArray($config['before'], true); $deployment->runAfterUpload = self::toArray($config['afterupload'], true); diff --git a/src/Deployment/Deployer.php b/src/Deployment/Deployer.php index 7f1e759..e159bea 100644 --- a/src/Deployment/Deployer.php +++ b/src/Deployment/Deployer.php @@ -26,6 +26,8 @@ class Deployer /** @var string[] */ public array $ignoreMasks = []; + public bool $ignoreRemote = true; + public bool $testMode = false; public bool $allowDelete = false; @@ -227,7 +229,13 @@ private function loadDeploymentFile(): ?array $res = []; foreach (explode("\n", $content) as $item) { if (count($item = explode('=', $item, 2)) === 2) { - $res[$item[1]] = $item[0] === '1' ? true : $item[0]; + if ($this->ignoreRemote === true) { + $res[$item[1]] = $item[0] === '1' ? true : $item[0]; + }else { + if (Helpers::matchMask($item[1], $this->ignoreMasks, is_dir("$this->remoteDir/$item[1]")) === false) { + $res[$item[1]] = $item[0] === '1' ? true : $item[0]; + } + } } } return $res;