mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-29 04:28:12 +01:00
Summary: This migrates the "Run Remote Command" build step over to use Drydock hosts and Harbormaster artifacts. Test Plan: Created a build plan with a "Lease Host" step and a "Run Command" step. Configured the "Run Command" step to use the artifact from the "Lease Host" step. Saw the results: {F87377} {F87378} Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley CC: Korvin, epriestley, aran Maniphest Tasks: T1049, T4111 Differential Revision: https://secure.phabricator.com/D7707
52 lines
1.6 KiB
PHP
52 lines
1.6 KiB
PHP
<?php
|
|
|
|
abstract class VariableBuildStepImplementation extends BuildStepImplementation {
|
|
|
|
/**
|
|
* Convert a user-provided string with variables in it, like:
|
|
*
|
|
* ls ${dirname}
|
|
*
|
|
* ...into a string with variables merged into it safely:
|
|
*
|
|
* ls 'dir with spaces'
|
|
*
|
|
* @param string Name of a `vxsprintf` function, like @{function:vcsprintf}.
|
|
* @param string User-provided pattern string containing `${variables}`.
|
|
* @param dict List of available replacement variables.
|
|
* @return string String with variables replaced safely into it.
|
|
*/
|
|
protected function mergeVariables($function, $pattern, array $variables) {
|
|
$regexp = '/\\$\\{(?P<name>[a-z\\.]+)\\}/';
|
|
|
|
$matches = null;
|
|
preg_match_all($regexp, $pattern, $matches);
|
|
|
|
$argv = array();
|
|
foreach ($matches['name'] as $name) {
|
|
if (!array_key_exists($name, $variables)) {
|
|
throw new Exception(pht("No such variable '%s'!", $name));
|
|
}
|
|
$argv[] = $variables[$name];
|
|
}
|
|
|
|
$pattern = str_replace('%', '%%', $pattern);
|
|
$pattern = preg_replace($regexp, '%s', $pattern);
|
|
|
|
return call_user_func($function, $pattern, $argv);
|
|
}
|
|
|
|
public function getSettingRemarkupInstructions() {
|
|
$variables = HarbormasterBuild::getAvailableBuildVariables();
|
|
$text = '';
|
|
$text .= pht('The following variables are available: ')."\n";
|
|
$text .= "\n";
|
|
foreach ($variables as $name => $desc) {
|
|
$text .= ' - `'.$name.'`: '.$desc."\n";
|
|
}
|
|
$text .= "\n";
|
|
$text .= "Use `\${name}` to merge a variable into a setting.";
|
|
return $text;
|
|
}
|
|
|
|
}
|