in src/main/java/org/apache/easyant/tasks/SearchModule.java [53:120]
public void doExecute() throws BuildException {
if (getOrganisation() == null) {
throw new BuildException("no organisation provided for SearchModule task");
}
if (getModule() == null) {
throw new BuildException("no module name provided for SearchModule task");
}
if (getRevision() == null) {
throw new BuildException("no revision provided for SearchModule task");
}
if (getPropertyPrefix() == null) {
throw new BuildException("no property prefix provided provided for SearchModule task");
}
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
// search all modules revision matching the requested criteria
DependencyResolver resolverToCheck;
if (getResolver() != null) {
resolverToCheck = settings.getResolver(getResolver());
} else {
resolverToCheck = settings.getDefaultResolver();
}
ModuleRevisionId mridToSearch = ModuleRevisionId.newInstance(getOrganisation(), getModule(), getBranch(),
getRevision());
ModuleRevisionId[] mrids = ivy.getSearchEngine().listModules(resolverToCheck, mridToSearch,
settings.getMatcher(matcher));
// diplay the list
List<String> choices = new ArrayList<String>();
for (int i = 0; i < mrids.length; i++) {
ResolvedModuleRevision rmr = ivy.findModule(mrids[i]);
if (rmr == null) {
log("Can't retrieve " + mrids[i].toString(), Project.MSG_WARN);
} else {
choices.add(String.valueOf(i));
StringBuilder sb = new StringBuilder();
sb.append(i).append(": ");
sb.append(mrids[i].getName());
sb.append(" v").append(mrids[i].getRevision());
// hide organization if its the default one
if (!EasyAntConstants.EASYANT_SKELETONS_ORGANISATION.equals(mrids[i].getOrganisation())) {
sb.append(" by ").append(mrids[i].getOrganisation());
}
// Get the description
if (rmr.getDescriptor().getDescription() != null && !rmr.getDescriptor().getDescription().equals("")) {
sb.append(" (").append(rmr.getDescriptor().getDescription()).append(")");
}
log(sb.toString());
}
}
if (choices.isEmpty()) {
throw new BuildException("No matching module were found !");
}
// ask end user to select a module
// TODO handle a default value
Integer value = Integer.valueOf(getInput("Choose a number:", null, choices));
ModuleRevisionId moduleToRetrieve = mrids[value];
// set final properties
getProject().setProperty(getPropertyPrefix() + ".org", moduleToRetrieve.getOrganisation());
getProject().setProperty(getPropertyPrefix() + ".module", moduleToRetrieve.getName());
getProject().setProperty(getPropertyPrefix() + ".rev", moduleToRetrieve.getRevision());
}