package hudson.cli;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Fingerprint.RangeSet;
import org.kohsuke.args4j.Argument;
import java.io.IOException;
import java.util.List;
/**
* {@link CLICommand} that acts on a series of {@link AbstractBuild}s.
*
* @author Kohsuke Kawaguchi
*/
public abstract class AbstractBuildRangeCommand extends CLICommand {
@Argument(metaVar="JOB",usage="Name of the job to build",required=true,index=0)
public AbstractProject<?,?> job;
@Argument(metaVar="RANGE",usage="Range of the build records to delete. 'N-M', 'N,M', or 'N'",required=true,index=1)
public String range;
protected int run() throws Exception {
RangeSet rs = RangeSet.fromString(range,false);
return act((List)job.getBuilds(rs));
}
protected abstract int act(List<AbstractBuild<?,?>> builds) throws IOException;
}