CLICommand c = CLICommand.getCurrent();
if (c==null) throw new IllegalStateException("Not executing a CLI command");
String[] envs = c.checkChannel().call(new GetCharacteristicEnvironmentVariables());
if (envs[0]==null || envs[1]==null)
throw new CmdLineException("This CLI command works only when invoked from inside a build");
Job j = Jenkins.getInstance().getItemByFullName(envs[0],Job.class);
if (j==null) throw new CmdLineException("No such job: "+envs[0]);
try {
Run r = j.getBuildByNumber(Integer.parseInt(envs[1]));
if (r==null) throw new CmdLineException("No such build #"+envs[1]+" in "+envs[0]);
return r;
} catch (NumberFormatException e) {
throw new CmdLineException("Invalid build number: "+envs[1]);
}
} catch (IOException e) {
throw new CmdLineException("Failed to identify the build being executed",e);
} catch (InterruptedException e) {
throw new CmdLineException("Failed to identify the build being executed",e);
}
}