in command.line/java/com/jetbrains/teamcity/command/RemoteRun.java [602:662]
Collection<File> getFiles(Args args, IProgressMonitor monitor) throws IllegalArgumentException {
monitor.beginTask(getMsg("RemoteRun.collect.changes.step.name"));
final String[] elements = args.getArguments();
int i = 0;// skip command
while (i < elements.length) {
final String currentToken = elements[i].toLowerCase();
if (elements[i].startsWith("-")) {
if (elements[i].toLowerCase().equals(CONFIGURATION_PARAM) || elements[i].toLowerCase().equals(CONFIGURATION_PARAM_LONG)) {
i++; // arg
if (elements[i].toLowerCase().equals(PROJECT_PARAM) || elements[i].toLowerCase().equals(PROJECT_PARAM_LONG)) {
i++; // arg
}
i++; // arg value
}
else if (elements[i].toLowerCase().equals(NO_WAIT_SWITCH) || currentToken.equals(NO_WAIT_SWITCH_LONG) || currentToken.equals(CHECK_FOR_CHANGES_EARLY_SWITCH)) {
i++; // single token
}
else {
i++; // arg
i++; // args value
}
} else {
// reach files
break;
}
}
Collection<File> result;
if (elements.length > i) {// file's part existing
final String[] buffer = new String[elements.length - i];
System.arraycopy(elements, i, buffer, 0, buffer.length);
debug("Read from arguments: %s", Arrays.toString(buffer));
result = collectFiles(buffer);
} else {
// try read from stdin
debug("Trying stdin...");
final String input = readFromStream(System.in);
if (input != null && input.trim().length() > 0) {
final String[] buffer = input.split("[\n\r]");
debug("Read from stdin: %s", Arrays.toString(buffer));
result = collectFiles(buffer);
} else { // let's use current directory as root if nothing passed
debug("Stdin is empty. Will use current (%s) folder as root", new File("."));
result = TCC_FILTER.accept(Util.SVN_FILES_FILTER.accept(Util.CVS_FILES_FILTER.accept(Util.getFiles("."))));
}
}
if (result.size() == 0) {
throw new IllegalArgumentException(getMsg("RemoteRun.no.files.collected.for.remoterun.error.message"));
}
result = normalizePaths(result);
monitor.status(new ProgressStatus(IProgressStatus.INFO, format(getMsg("RemoteRun.collect.changes.step.result.pattern"), result.size())));
monitor.done();
for (final File collected : result) {
debug("%s", collected);
}
return result;
}