Support installation of proprietary libraries in $site/lib
Currently only download of public available libs is supported during Gerrit installation process. Because proprietary libs can not be downloaded, add an option to copy it from a local file. Change-Id: I518282501eb2f66b09ef1bf9c63eed5088a5fc80
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
package com.google.gerrit.pgm.init;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.io.Files;
|
||||
import com.google.gerrit.pgm.util.ConsoleUI;
|
||||
import com.google.gerrit.pgm.util.Die;
|
||||
import com.google.gerrit.pgm.util.IoUtil;
|
||||
@@ -35,6 +36,7 @@ import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.Proxy;
|
||||
import java.net.ProxySelector;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
@@ -50,6 +52,7 @@ class LibraryDownloader {
|
||||
private String sha1;
|
||||
private String remove;
|
||||
private File dst;
|
||||
private boolean download; // download or copy
|
||||
|
||||
@Inject
|
||||
LibraryDownloader(ConsoleUI ui, SitePaths site) {
|
||||
@@ -63,6 +66,7 @@ class LibraryDownloader {
|
||||
|
||||
void setJarUrl(final String url) {
|
||||
this.jarUrl = url;
|
||||
download = jarUrl.startsWith("http");
|
||||
}
|
||||
|
||||
void setSHA1(final String sha1) {
|
||||
@@ -117,7 +121,8 @@ class LibraryDownloader {
|
||||
msg.append(" If available, Gerrit can take advantage of features\n");
|
||||
msg.append(" in the library, but will also function without it.\n");
|
||||
}
|
||||
msg.append("Download and install it now");
|
||||
msg.append(String.format(
|
||||
"%s and install it now", download ? "Download" : "Copy"));
|
||||
return ui.yesno(true, msg.toString(), name);
|
||||
}
|
||||
}
|
||||
@@ -129,7 +134,11 @@ class LibraryDownloader {
|
||||
|
||||
try {
|
||||
removeStaleVersions();
|
||||
doGetByHttp();
|
||||
if (download) {
|
||||
doGetByHttp();
|
||||
} else {
|
||||
doGetByLocalCopy();
|
||||
}
|
||||
verifyFileChecksum();
|
||||
} catch (IOException err) {
|
||||
dst.delete();
|
||||
@@ -186,6 +195,28 @@ class LibraryDownloader {
|
||||
}
|
||||
}
|
||||
|
||||
private void doGetByLocalCopy() throws IOException {
|
||||
System.err.print("Copying " + jarUrl + " ...");
|
||||
File f = url2file(jarUrl);
|
||||
if (!f.exists()) {
|
||||
StringBuilder msg = new StringBuilder()
|
||||
.append("\n")
|
||||
.append("Can not find the %s at this location: %s\n")
|
||||
.append("Please provide alternative URL");
|
||||
f = url2file(ui.readString(null, msg.toString(), name, jarUrl));
|
||||
}
|
||||
Files.copy(f, dst);
|
||||
}
|
||||
|
||||
private static File url2file(final String urlString) throws IOException {
|
||||
final URL url = new URL(urlString);
|
||||
try {
|
||||
return new File(url.toURI());
|
||||
} catch (URISyntaxException e) {
|
||||
return new File(url.getPath());
|
||||
}
|
||||
}
|
||||
|
||||
private void doGetByHttp() throws IOException {
|
||||
System.err.print("Downloading " + jarUrl + " ...");
|
||||
System.err.flush();
|
||||
|
Reference in New Issue
Block a user