Merge "Remove old library JARs when upgrading" into stable-2.6
This commit is contained in:
@@ -78,6 +78,7 @@ class Libraries {
|
||||
dl.setName(get(cfg, n, "name"));
|
||||
dl.setJarUrl(get(cfg, n, "url"));
|
||||
dl.setSHA1(get(cfg, n, "sha1"));
|
||||
dl.setRemove(get(cfg, n, "remove"));
|
||||
field.set(this, dl);
|
||||
}
|
||||
|
||||
|
@@ -14,6 +14,7 @@
|
||||
|
||||
package com.google.gerrit.pgm.init;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.pgm.util.ConsoleUI;
|
||||
import com.google.gerrit.pgm.util.Die;
|
||||
import com.google.gerrit.server.config.SitePaths;
|
||||
@@ -26,6 +27,7 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
@@ -46,6 +48,7 @@ class LibraryDownloader {
|
||||
private String name;
|
||||
private String jarUrl;
|
||||
private String sha1;
|
||||
private String remove;
|
||||
private File dst;
|
||||
|
||||
@Inject
|
||||
@@ -68,6 +71,10 @@ class LibraryDownloader {
|
||||
this.sha1 = sha1;
|
||||
}
|
||||
|
||||
void setRemove(String remove) {
|
||||
this.remove = remove;
|
||||
}
|
||||
|
||||
void downloadRequired() {
|
||||
this.required = true;
|
||||
download();
|
||||
@@ -123,6 +130,7 @@ class LibraryDownloader {
|
||||
}
|
||||
|
||||
try {
|
||||
removeStaleVersions();
|
||||
doGetByHttp();
|
||||
verifyFileChecksum();
|
||||
} catch (IOException err) {
|
||||
@@ -158,6 +166,26 @@ class LibraryDownloader {
|
||||
reload.reload();
|
||||
}
|
||||
|
||||
private void removeStaleVersions() {
|
||||
if (!Strings.isNullOrEmpty(remove)) {
|
||||
String[] names = lib_dir.list(new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(File dir, String name) {
|
||||
return name.matches("^" + remove + "$");
|
||||
}
|
||||
});
|
||||
if (names != null) {
|
||||
for (String old : names) {
|
||||
String bak = "." + old + ".backup";
|
||||
ui.message("Renaming %s to %s", old, bak);
|
||||
if (!new File(lib_dir, old).renameTo(new File(lib_dir, bak))) {
|
||||
throw new Die("cannot rename " + old);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void doGetByHttp() throws IOException {
|
||||
System.err.print("Downloading " + jarUrl + " ...");
|
||||
System.err.flush();
|
||||
|
Reference in New Issue
Block a user