diff --git a/core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java b/core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java new file mode 100644 index 0000000..6341f76 --- /dev/null +++ b/core/src/main/java/hudson/cli/SetBuildDisplayNameCommand.java @@ -0,0 +1,47 @@ +package hudson.cli; + +import hudson.Extension; +import hudson.model.AbstractProject; +import hudson.model.Run; +import hudson.remoting.Callable; +import org.apache.commons.io.IOUtils; +import org.kohsuke.args4j.Argument; + +import java.io.IOException; +import java.io.Serializable; + +@Extension +public class SetBuildDisplayNameCommand extends CLICommand implements Serializable { + + @Override + public String getShortDescription() { + return "Sets the displayName of a build"; + } + + @Argument(metaVar="JOB", usage="Name of the job to build", required=true, index=0) + public transient AbstractProject job; + + @Argument(metaVar="BUILD#", usage="Number of the build", required=true, index=1) + public int number; + + @Argument(metaVar="DISPLAYNAME", required=true, usage="DisplayName to be set. '-' to read from stdin.", index=2) + public String displayName; + + protected int run() throws Exception { + Run run = job.getBuildByNumber(number); + run.checkPermission(Run.UPDATE); + + if ("-".equals(displayName)) { + displayName = channel.call(new Callable() { + public String call() throws IOException { + return IOUtils.toString(System.in); + } + }); + } + + run.setDisplayName(displayName); + + return 0; + } + +}