/**
* Gets the process which is used for the supplied step.
*
* @param DeployStep $step
* @param array $tokens
*
* @return Process
*/
private function getScriptForStep(DeployStep $step, array $tokens = [])
{
switch ($step->stage) {
case Stage::DO_CLONE:
return new Process('deploy.steps.CreateNewRelease', $tokens);
case Stage::DO_INSTALL:
// Write configuration file to release dir, symlink shared files and run composer
$process = new Process('deploy.steps.InstallComposerDependencies', $tokens);
$process->prependScript($this->configurationFileCommands($tokens['release_path']))->appendScript($this->shareFileCommands($tokens['release_path'], $tokens['shared_path']));
return $process;
case Stage::DO_ACTIVATE:
return new Process('deploy.steps.ActivateNewRelease', $tokens);
case Stage::DO_PURGE:
return new Process('deploy.steps.PurgeOldReleases', $tokens);
}
// Custom step
return new Process($step->command->script, $tokens, Process::DIRECT_INPUT);
}