* * 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 */ 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 ' . $this->getConfig()->getEnvironment() . ' environment', 1, 2 ); return 0; } }