package hudson.cli;
import hudson.Extension;
import hudson.model.ParametersAction;
import hudson.model.Run;
import hudson.model.StringParameterValue;
import org.kohsuke.args4j.Argument;
import java.util.Collections;
/**
* Used from the build to update the build variable.
*
* This allows one build step to affect the environment variables seen by later build steps.
*
* @author Kohsuke Kawaguchi
* @since 1.514
*/
@Extension
public class SetBuildParameterCommand extends CommandDuringBuild {
@Argument(index=0, metaVar="NAME", required=true, usage="Name of the build variable")
public String name;
@Argument(index=1, metaVar="VALUE", required=true, usage="Value of the build variable")
public String value;
@Override
public String getShortDescription() {
return Messages.SetBuildParameterCommand_ShortDescription();
}
@Override
protected int run() throws Exception {
Run r = getCurrentlyBuilding();
r.checkPermission(Run.UPDATE);
StringParameterValue p = new StringParameterValue(name, value);
ParametersAction a = r.getAction(ParametersAction.class);
if (a!=null) {
r.replaceAction(a.createUpdated(Collections.singleton(p)));
} else {
r.addAction(new ParametersAction(p));
}
return 0;
}
}