diff --git a/core/src/main/java/hudson/model/Project.java b/core/src/main/java/hudson/model/Project.java index 1616ff0d3cd585fa001a1524f81ecdd1357d6702..024baa8032593f483820cfd160466d10337817ae 100644 --- a/core/src/main/java/hudson/model/Project.java +++ b/core/src/main/java/hudson/model/Project.java @@ -2,6 +2,7 @@ package hudson.model; import hudson.FilePath; import hudson.Launcher; +import hudson.util.EditDistance; import hudson.model.Descriptor.FormException; import hudson.model.Fingerprint.RangeSet; import hudson.model.RunMap.Constructor; @@ -728,6 +729,19 @@ public class Project extends Job { return r; } + /** + * Finds a {@link Project} that has the name closest to the given name. + */ + public static Project findNearest(String name) { + List projects = Hudson.getInstance().getProjects(); + String[] names = new String[projects.size()]; + for( int i=0; i REVERSE_INTEGER_COMPARATOR = new Comparator() { public int compare(Integer o1, Integer o2) { return o2-o1; diff --git a/core/src/main/java/hudson/tasks/BuildTrigger.java b/core/src/main/java/hudson/tasks/BuildTrigger.java index 3c226d2845c5829ae0be744bba035042f66e1fcb..b722140d69866d037fea1fc5aed7abfa4d956d92 100644 --- a/core/src/main/java/hudson/tasks/BuildTrigger.java +++ b/core/src/main/java/hudson/tasks/BuildTrigger.java @@ -123,7 +123,8 @@ public class BuildTrigger extends Publisher { String projectName = tokens.nextToken().trim(); Job job = Hudson.getInstance().getJob(projectName); if(job==null) { - error("No such project: "+projectName); + error("No such project '"+projectName+"'. Did you mean '"+ + Project.findNearest(projectName).getName()+"'?"); return; } if(!(job instanceof Project)) {