package hudson.plugins.distfork;
import org.kohsuke.args4j.spi.OptionHandler;
import org.kohsuke.args4j.spi.Parameters;
import org.kohsuke.args4j.spi.Setter;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.OptionDef;
/**
* Eagerly grabs all the arguments.
*
* <p>
* Used with {@link Argument}, this implements a semantics where
* non-option token causes the option parsing to terminate.
* An example of this is ssh(1), where "ssh -p 222 abc" will treat "-p" as an option
* to ssh but "ssh abc -p 222" is considered to have no option for ssh.
*
* TODO: to be moved to args4j once I confirmed that this works.
*
* @author Kohsuke Kawaguchi
*/
public class RestOfArgumentsHandler extends OptionHandler {
public RestOfArgumentsHandler(CmdLineParser cmdLineParser, OptionDef optionDef, Setter setter) {
super(cmdLineParser, optionDef, setter);
}
public int parseArguments(Parameters parameters) throws CmdLineException {
// TODO: hack until we get the Parameters.size() method in the newer args4j
int i;
for (i=0; ; i++) {
try {
setter.addValue(parameters.getParameter(i));
} catch (CmdLineException e) {
return i;
}
}
}
public String getDefaultMetaVariable() {
return "ARGS";
}
}