Merge "Handle KeyboardInterrupt in Buck build wrapper scripts" into stable-2.8
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java
index 4f77b0f..bd22146 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/BaseInit.java
@@ -75,7 +75,9 @@
   @Override
   public int run() throws Exception {
     final SiteInit init = createSiteInit();
-    beforeInit(init);
+    if (beforeInit(init)) {
+      return 0;
+    }
 
     init.flags.autoStart = getAutoStart() && init.site.isNew;
     init.flags.skipPlugins = skipPlugins();
@@ -108,7 +110,8 @@
     return false;
   }
 
-  protected void beforeInit(SiteInit init) throws Exception {
+  protected boolean beforeInit(SiteInit init) throws Exception {
+    return false;
   }
 
   protected void afterInit(SiteRun run) throws Exception {
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
index cbf50b9..68e0f6a 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
@@ -76,11 +76,12 @@
   }
 
   @Override
-  protected void beforeInit(SiteInit init) throws Exception {
+  protected boolean beforeInit(SiteInit init) throws Exception {
     ErrorLogFile.errorOnlyConsole();
 
     if (!skipPlugins) {
-      final List<PluginData> plugins = InitPlugins.listPlugins(init.site);
+      final List<PluginData> plugins =
+          InitPlugins.listPluginsAndRemoveTempFiles(init.site);
       ConsoleUI ui = ConsoleUI.getInstance(false);
       verifyInstallPluginList(ui, plugins);
       if (listPlugins) {
@@ -92,8 +93,10 @@
         } else {
           ui.message("No plugins found.\n");
         }
+        return true;
       }
     }
+    return false;
   }
 
   @Override
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java
index ee0d799..9c8305a 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitPlugins.java
@@ -51,6 +51,14 @@
   }
 
   public static List<PluginData> listPlugins(SitePaths site) throws IOException {
+    return listPlugins(site, false);
+  }
+
+  public static List<PluginData> listPluginsAndRemoveTempFiles(SitePaths site) throws IOException {
+    return listPlugins(site, true);
+  }
+
+  private static List<PluginData> listPlugins(SitePaths site, boolean deleteTempPluginFile) throws IOException {
     final File myWar = GerritLauncher.getDistributionArchive();
     final List<PluginData> result = Lists.newArrayList();
     try {
@@ -69,6 +77,9 @@
             final InputStream in = zf.getInputStream(ze);
             final File tmpPlugin = PluginLoader.storeInTemp(pluginName, in, site);
             final String pluginVersion = getVersion(tmpPlugin);
+            if (deleteTempPluginFile) {
+              tmpPlugin.delete();
+            }
 
             result.add(new PluginData(pluginName, pluginVersion, tmpPlugin));
           }