Search in sources :

Example 1 with Data

use of hudson.model.UpdateSite.Data in project hudson-2.x by hudson.

the class InstallPluginCommand method run.

protected int run() throws Exception {
    Hudson h = Hudson.getInstance();
    h.checkPermission(Hudson.ADMINISTER);
    for (String source : sources) {
        // is this a file?
        FilePath f = new FilePath(channel, source);
        if (f.exists()) {
            stdout.println(Messages.InstallPluginCommand_InstallingPluginFromLocalFile(f));
            if (name == null)
                name = f.getBaseName();
            f.copyTo(getTargetFile());
            continue;
        }
        // is this an URL?
        try {
            URL u = new URL(source);
            stdout.println(Messages.InstallPluginCommand_InstallingPluginFromUrl(u));
            if (name == null) {
                name = u.getPath();
                name = name.substring(name.indexOf('/') + 1);
                name = name.substring(name.indexOf('\\') + 1);
                int idx = name.lastIndexOf('.');
                if (idx > 0)
                    name = name.substring(0, idx);
            }
            getTargetFile().copyFrom(u);
            continue;
        } catch (MalformedURLException e) {
        // not an URL
        }
        // is this a plugin the update center?
        UpdateSite.Plugin p = h.getUpdateCenter().getPlugin(source);
        if (p != null) {
            stdout.println(Messages.InstallPluginCommand_InstallingFromUpdateCenter(source));
            p.deploy().get();
            continue;
        }
        stdout.println(Messages.InstallPluginCommand_NotAValidSourceName(source));
        if (!source.contains(".") && !source.contains(":") && !source.contains("/") && !source.contains("\\")) {
            // looks like a short plugin name. Why did we fail to find it in the update center?
            if (h.getUpdateCenter().getSites().isEmpty()) {
                stdout.println(Messages.InstallPluginCommand_NoUpdateCenterDefined());
            } else {
                Set<String> candidates = new HashSet<String>();
                for (UpdateSite s : h.getUpdateCenter().getSites()) {
                    Data dt = s.getData();
                    if (dt == null) {
                        stdout.println(Messages.InstallPluginCommand_NoUpdateDataRetrieved(s.getUrl()));
                    } else {
                        candidates.addAll(dt.plugins.keySet());
                    }
                }
                stdout.println(Messages.InstallPluginCommand_DidYouMean(source, EditDistance.findNearest(source, candidates)));
            }
        }
        return 1;
    }
    if (restart)
        h.restart();
    // all success
    return 0;
}
Also used : FilePath(hudson.FilePath) MalformedURLException(java.net.MalformedURLException) Hudson(hudson.model.Hudson) Data(hudson.model.UpdateSite.Data) UpdateSite(hudson.model.UpdateSite) URL(java.net.URL) HashSet(java.util.HashSet)

Aggregations

FilePath (hudson.FilePath)1 Hudson (hudson.model.Hudson)1 UpdateSite (hudson.model.UpdateSite)1 Data (hudson.model.UpdateSite.Data)1 MalformedURLException (java.net.MalformedURLException)1 URL (java.net.URL)1 HashSet (java.util.HashSet)1