mirror of https://github.com/hauke68/Magallanes
Andrés Montañez
11 years ago
16 changed files with 190 additions and 41 deletions
@ -0,0 +1,40 @@
|
||||
<?php |
||||
namespace Mage\Task\BuiltIn\Composer; |
||||
|
||||
use Exception; |
||||
use Mage\Task\AbstractTask; |
||||
use Mage\Task\ErrorWithMessageException; |
||||
use Mage\Task\SkipException; |
||||
|
||||
class GenerateAutoload extends AbstractTask |
||||
{ |
||||
/** |
||||
* Returns the Title of the Task |
||||
* @return string |
||||
*/ |
||||
public function getName() |
||||
{ |
||||
return 'Generating autoload files via composer [built-in]'; |
||||
} |
||||
|
||||
/** |
||||
* Runs the task |
||||
* |
||||
* @return boolean |
||||
* @throws Exception |
||||
* @throws ErrorWithMessageException |
||||
* @throws SkipException |
||||
*/ |
||||
public function run() |
||||
{ |
||||
$releasesDirectory = $this->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); |
||||
} |
||||
} |
@ -0,0 +1,50 @@
|
||||
<?php |
||||
namespace Mage\Task\BuiltIn\Filesystem; |
||||
|
||||
use Exception; |
||||
use Mage\Task\AbstractTask; |
||||
use Mage\Task\ErrorWithMessageException; |
||||
use Mage\Task\SkipException; |
||||
use Mage\Task\Releases\IsReleaseAware; |
||||
|
||||
class ApplyFacls extends AbstractTask implements IsReleaseAware |
||||
{ |
||||
/** |
||||
* Returns the Title of the Task |
||||
* @return string |
||||
*/ |
||||
public function getName() |
||||
{ |
||||
return 'Set file ACLs on remote system [built-in]'; |
||||
} |
||||
|
||||
/** |
||||
* Runs the task |
||||
* |
||||
* @return boolean |
||||
* @throws Exception |
||||
* @throws ErrorWithMessageException |
||||
* @throws SkipException |
||||
*/ |
||||
public function run() |
||||
{ |
||||
$releasesDirectory = $this->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; |
||||
} |
||||
} |
@ -0,0 +1,54 @@
|
||||
<?php |
||||
namespace Mage\Task\BuiltIn\Filesystem; |
||||
|
||||
use Mage\Task\AbstractTask; |
||||
use Mage\Task\Releases\IsReleaseAware; |
||||
use Mage\Task\SkipException; |
||||
|
||||
class LinkSharedFilesTask extends AbstractTask implements IsReleaseAware |
||||
{ |
||||
|
||||
/** |
||||
* Returns the Title of the Task |
||||
* @return string |
||||
*/ |
||||
public function getName() |
||||
{ |
||||
return 'Linking files/folders from the shared folder into the current release [built-in]'; |
||||
} |
||||
|
||||
/** |
||||
* Runs the task |
||||
* |
||||
* @return boolean |
||||
* @throws Exception |
||||
* @throws \Mage\Task\ErrorWithMessageException |
||||
* @throws SkipException |
||||
*/ |
||||
public function run() |
||||
{ |
||||
$linkedFiles = $this->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; |
||||
} |
||||
} |
Loading…
Reference in new issue