Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Nostromo] Add File System tasks and tests
- Loading branch information
1 parent
5d95b4d
commit 3f071ff
Showing
5 changed files
with
446 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
<?php | ||
/* | ||
* This file is part of the Magallanes package. | ||
* | ||
* (c) Andrés Montañez <andres@andresmontanez.com> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
namespace Mage\Task\BuiltIn\FS; | ||
|
||
use Mage\Runtime\Exception\RuntimeException; | ||
use Mage\Task\AbstractTask; | ||
|
||
/** | ||
* File System Task - Abstract Base class for File Operations | ||
* | ||
* @author Andrés Montañez <andresmontanez@gmail.com> | ||
*/ | ||
abstract class AbstractFileTask extends AbstractTask | ||
{ | ||
protected function getOptions() | ||
{ | ||
$mandatory = $this->getParameters(); | ||
|
||
foreach ($mandatory as $parameter) { | ||
if (!array_key_exists($parameter, $this->options)) { | ||
throw new RuntimeException(sprintf('Parameter "%s" is not defined', $parameter)); | ||
} | ||
} | ||
|
||
return $this->options; | ||
} | ||
|
||
abstract protected function getParameters(); | ||
|
||
protected function getFile($file) | ||
{ | ||
$mapping = [ | ||
'%environment%' => $this->runtime->getEnvironment(), | ||
]; | ||
|
||
if ($this->runtime->getWorkingHost()) { | ||
$mapping['%host%'] = $this->runtime->getWorkingHost(); | ||
} | ||
|
||
if ($this->runtime->getReleaseId()) { | ||
$mapping['%release%'] = $this->runtime->getReleaseId(); | ||
} | ||
|
||
$options = $this->getOptions(); | ||
return str_replace( | ||
array_keys($mapping), | ||
array_values($mapping), | ||
$options[$file] | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
<?php | ||
/* | ||
* This file is part of the Magallanes package. | ||
* | ||
* (c) Andrés Montañez <andres@andresmontanez.com> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
namespace Mage\Task\BuiltIn\FS; | ||
|
||
use Symfony\Component\Process\Process; | ||
|
||
/** | ||
* File System Task - Copy a File | ||
* | ||
* @author Andrés Montañez <andresmontanez@gmail.com> | ||
*/ | ||
class CopyTask extends AbstractFileTask | ||
{ | ||
public function getName() | ||
{ | ||
return 'fs/copy'; | ||
} | ||
|
||
public function getDescription() | ||
{ | ||
return sprintf('[FS] Copy "%s" to "%s"', $this->getFile('from'), $this->getFile('to')); | ||
} | ||
|
||
public function execute() | ||
{ | ||
$from = $this->getFile('from'); | ||
$to = $this->getFile('to'); | ||
|
||
$cmd = sprintf('cp -p %s %s', $from, $to); | ||
|
||
/** @var Process $process */ | ||
$process = $this->runtime->runCommand($cmd); | ||
|
||
return $process->isSuccessful(); | ||
} | ||
|
||
protected function getParameters() | ||
{ | ||
return ['from', 'to']; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
<?php | ||
/* | ||
* This file is part of the Magallanes package. | ||
* | ||
* (c) Andrés Montañez <andres@andresmontanez.com> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
namespace Mage\Task\BuiltIn\FS; | ||
|
||
use Symfony\Component\Process\Process; | ||
|
||
/** | ||
* File System Task - Move a File | ||
* | ||
* @author Andrés Montañez <andresmontanez@gmail.com> | ||
*/ | ||
class MoveTask extends AbstractFileTask | ||
{ | ||
public function getName() | ||
{ | ||
return 'fs/move'; | ||
} | ||
|
||
public function getDescription() | ||
{ | ||
return sprintf('[FS] Move "%s" to "%s"', $this->getFile('from'), $this->getFile('to')); | ||
} | ||
|
||
public function execute() | ||
{ | ||
$from = $this->getFile('from'); | ||
$to = $this->getFile('to'); | ||
|
||
$cmd = sprintf('mv %s %s', $from, $to); | ||
|
||
/** @var Process $process */ | ||
$process = $this->runtime->runCommand($cmd); | ||
|
||
return $process->isSuccessful(); | ||
} | ||
|
||
protected function getParameters() | ||
{ | ||
return ['from', 'to']; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<?php | ||
/* | ||
* This file is part of the Magallanes package. | ||
* | ||
* (c) Andrés Montañez <andres@andresmontanez.com> | ||
* | ||
* For the full copyright and license information, please view the LICENSE | ||
* file that was distributed with this source code. | ||
*/ | ||
|
||
namespace Mage\Task\BuiltIn\FS; | ||
|
||
use Symfony\Component\Process\Process; | ||
|
||
/** | ||
* File System Task - Remove a File | ||
* | ||
* @author Andrés Montañez <andresmontanez@gmail.com> | ||
*/ | ||
class RemoveTask extends AbstractFileTask | ||
{ | ||
public function getName() | ||
{ | ||
return 'fs/remove'; | ||
} | ||
|
||
public function getDescription() | ||
{ | ||
return sprintf('[FS] Remove "%s"', $this->getFile('file')); | ||
} | ||
|
||
public function execute() | ||
{ | ||
$file = $this->getFile('file'); | ||
|
||
$cmd = sprintf('rm %s', $file); | ||
|
||
/** @var Process $process */ | ||
$process = $this->runtime->runCommand($cmd); | ||
|
||
return $process->isSuccessful(); | ||
} | ||
|
||
protected function getParameters() | ||
{ | ||
return ['file']; | ||
} | ||
} |
Oops, something went wrong.