diff --git a/Mage/Task/BuiltIn/Composer/GenerateAutoload.php b/Mage/Task/BuiltIn/Composer/GenerateAutoload.php new file mode 100644 index 0000000..00ae10a --- /dev/null +++ b/Mage/Task/BuiltIn/Composer/GenerateAutoload.php @@ -0,0 +1,40 @@ +getConfig()->release('directory', 'releases'); + $releasesDirectory = rtrim($this->getConfig()->deployment('to'), '/') . '/' . $releasesDirectory; + $currentCopy = $releasesDirectory . '/' . $this->getConfig()->getReleaseId(); + + $sharedFolderName = $this->getParameter('shared', 'shared'); + $sharedFolderName = rtrim($this->getConfig()->deployment('to'), '/') . '/' . $sharedFolderName; + + $composerPath = $this->getParameter('composer', "$sharedFolderName/composer.phar"); + return $this->runCommandRemote("/usr/bin/env php $composerPath --working-dir=$currentCopy dumpautoload --optimize", $output); + } +} diff --git a/Mage/Task/BuiltIn/Filesystem/ApplyFacls.php b/Mage/Task/BuiltIn/Filesystem/ApplyFacls.php new file mode 100644 index 0000000..02a014d --- /dev/null +++ b/Mage/Task/BuiltIn/Filesystem/ApplyFacls.php @@ -0,0 +1,50 @@ +getConfig()->release('directory', 'releases'); + $releasesDirectory = rtrim($this->getConfig()->deployment('to'), '/') . '/' . $releasesDirectory; + $currentCopy = $releasesDirectory . '/' . $this->getConfig()->getReleaseId(); + + + $aclParam = $this->getParameter('acl_param', ''); + if (empty($aclParam)) { + throw new SkipException('Parameter acl_param not set.'); + } + + $folders = $this->getParameter('folders', []); + $recursive = $this->getParameter('recursive', false) ? ' -R ' : ' '; + + foreach ($folders as $folder) { + $this->runCommandRemote("setfacl$recursive-m $aclParam $currentCopy/$folder", $output); + } + + return true; + } +} diff --git a/Mage/Task/BuiltIn/Filesystem/LinkSharedFiles.php b/Mage/Task/BuiltIn/Filesystem/LinkSharedFiles.php new file mode 100644 index 0000000..5b01a76 --- /dev/null +++ b/Mage/Task/BuiltIn/Filesystem/LinkSharedFiles.php @@ -0,0 +1,53 @@ +getParameter('linked_files', []); + $linkedFolders = $this->getParameter('linked_folders', []); + if (sizeof($linkedFiles) == 0 && sizeof($linkedFolders) == 0) { + throw new SkipException('No files and folders configured for sym-linking.'); + } + + $sharedFolderName = $this->getParameter('shared', 'shared'); + $sharedFolderName = rtrim($this->getConfig()->deployment('to'), '/') . '/' . $sharedFolderName; + $releasesDirectory = $this->getConfig()->release('directory', 'releases'); + $releasesDirectory = rtrim($this->getConfig()->deployment('to'), '/') . '/' . $releasesDirectory; + + $currentCopy = $releasesDirectory . '/' . $this->getConfig()->getReleaseId(); + foreach ($linkedFolders as $folder) { + $command = "ln -nfs $sharedFolderName/$folder $currentCopy/$folder"; + $this->runCommandRemote($command); + } + + foreach ($linkedFiles as $folder) { + $command = "ln -nfs $sharedFolderName/$folder $currentCopy/$folder"; + $this->runCommandRemote($command); + } + + return true; + } +}