Plugins: Emit nicer error message when trying to install unknown plugin

When installing plugins, we first try the elastic download service for
official plugins, then try maven coordinates, and finally try the
argument as a url. This can lead to confusing error messages about
unknown protocols when eg an official plugin name is mispelled. This
change adds a heuristic for determining if the argument in the final
case is in fact a url that we should try, and gives a simplified error
message in the case it is definitely not a url.

closes #17226
This commit is contained in:
Ryan Ernst 2016-06-14 20:01:34 -07:00
parent fa77d4d885
commit 6db323164e
1 changed files with 7 additions and 0 deletions

View File

@ -134,6 +134,9 @@ class InstallPluginCommand extends SettingCommand {
}
}
// protocols allowed for direct url installation
private static final List<String> URL_PROTOCOLS = Arrays.asList("http", "https", "file");
private final OptionSpec<Void> batchOption;
private final OptionSpec<String> arguments;
@ -237,6 +240,10 @@ class InstallPluginCommand extends SettingCommand {
}
// fall back to plain old URL
if (pluginId.contains("://") == false) {
// definitely not a valid url, so assume it is a plugin name
throw new UserError(ExitCodes.USAGE, "Unknown plugin " + pluginId);
}
terminal.println("-> Downloading " + URLDecoder.decode(pluginId, "UTF-8"));
return downloadZip(terminal, pluginId, tmpDir);
}