mirror of https://github.com/hauke68/Magallanes
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.3 KiB
76 lines
2.3 KiB
<?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\Command\BuiltIn; |
|
|
|
use Mage\Command\AbstractCommand; |
|
use Mage\Command\RequiresEnvironment; |
|
use Mage\Console; |
|
|
|
/** |
|
* Command for Locking the Deployment to an Environment |
|
* |
|
* @author Andrés Montañez <andres@andresmontanez.com> |
|
*/ |
|
class LockCommand extends AbstractCommand implements RequiresEnvironment |
|
{ |
|
public function __construct() |
|
{ |
|
$this->setName('Lock command') |
|
->setHelpMessage( |
|
"Locks the deployment to given environment and creates a lock file " |
|
. "with lock reason and lock performer.\n" |
|
. "You are going to be prompted to provide this information" |
|
) |
|
->setSyntaxMessage('mage lock to:[environment_name]') |
|
->addUsageExample( |
|
'mage lock to:production', |
|
'Create a lock to production environment deployment' |
|
); |
|
} |
|
|
|
/** |
|
* Locks the Deployment to a Environment |
|
* @see \Mage\Command\AbstractCommand::run() |
|
*/ |
|
public function run() |
|
{ |
|
Console::output('Your name (enter to leave blank): ', 0, 0); |
|
$name = Console::readInput(); |
|
Console::output('Your email (enter to leave blank): ', 0, 0); |
|
$email = Console::readInput(); |
|
Console::output('Reason of lock (enter to leave blank): ', 0, 0); |
|
$reason = Console::readInput(); |
|
|
|
$lockmsg = PHP_EOL; |
|
if ($name) { |
|
$lockmsg .= 'Locked by ' . $name . ' '; |
|
} |
|
if ($email) { |
|
$lockmsg .= '(' . $email . ')'; |
|
} |
|
if ($reason) { |
|
$lockmsg .= PHP_EOL . $reason . PHP_EOL; |
|
} |
|
|
|
$lockFile = getcwd() . '/.mage/' . $this->getConfig()->getEnvironment() . '.lock'; |
|
file_put_contents($lockFile, 'Locked environment at date: ' . date('Y-m-d H:i:s') . $lockmsg); |
|
|
|
Console::output( |
|
'Locked deployment to <light_purple>' |
|
. $this->getConfig()->getEnvironment() |
|
. '</light_purple> environment', |
|
1, |
|
2 |
|
); |
|
|
|
return 0; |
|
} |
|
}
|
|
|