diff --git a/src/Mage/Command/BuiltIn/DeployCommand.php b/src/Mage/Command/BuiltIn/DeployCommand.php index e720d50..7c295a3 100644 --- a/src/Mage/Command/BuiltIn/DeployCommand.php +++ b/src/Mage/Command/BuiltIn/DeployCommand.php @@ -22,6 +22,7 @@ use Mage\Task\TaskFactory; use Mage\Utils; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Mage\Command\AbstractCommand; @@ -51,6 +52,7 @@ class DeployCommand extends AbstractCommand ->setName('deploy') ->setDescription('Deploy code to hosts') ->addArgument('environment', InputArgument::REQUIRED, 'Name of the environment to deploy to') + ->addOption('branch', null, InputOption::VALUE_REQUIRED, 'Force to switch to a branch other than the one defined', false) ; } @@ -89,6 +91,11 @@ class DeployCommand extends AbstractCommand $output->writeln(''); try { + // Check if Branch is forced + if ($input->getOption('branch') !== false) { + $this->runtime->setEnvironmentConfig('branch', $input->getOption('branch')); + } + $this->taskFactory = new TaskFactory($this->runtime); $this->runDeployment($output); } catch (DeploymentException $exception) { diff --git a/src/Mage/Runtime/Runtime.php b/src/Mage/Runtime/Runtime.php index 8ec0036..f93ffed 100644 --- a/src/Mage/Runtime/Runtime.php +++ b/src/Mage/Runtime/Runtime.php @@ -234,6 +234,24 @@ class Runtime return $config; } + /** + * Overwrites an Environment configuration option + * + * @param $key + * @param $value + * @return Runtime + */ + public function setEnvironmentConfig($key, $value) + { + if (array_key_exists('environments', $this->configuration) && is_array($this->configuration['environments'])) { + if (array_key_exists($this->environment, $this->configuration['environments'])) { + $this->configuration['environments'][$this->environment][$key] = $value; + } + } + + return $this; + } + /** * Sets the working Environment *