Add init step to copy configuration from the 'hooks-bugzilla' plugin The 'its-bugzilla' plugin replaces the 'hooks-bugzilla' plugin. The configuration for both plugins only differs in the section names. If the 'hooks-bugzilla' plugin was previously installed its configuration can simply be copied for the 'its-bugzilla' plugin. Change-Id: I080a23c5d591ab3e9d7e35c609bb3fa2d15faa5e Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/bz/InitBugzilla.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/bz/InitBugzilla.java index 1b22bbf..61156e9 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/hooks/bz/InitBugzilla.java +++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/bz/InitBugzilla.java
@@ -17,6 +17,7 @@ import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.pgm.init.AllProjectsConfig; import com.google.gerrit.pgm.init.AllProjectsNameOnInitProvider; +import com.google.gerrit.pgm.init.InitFlags; import com.google.gerrit.pgm.init.Section; import com.google.gerrit.pgm.util.ConsoleUI; import com.google.inject.Inject; @@ -30,12 +31,14 @@ import org.eclipse.jgit.errors.ConfigInvalidException; import java.io.IOException; +import java.util.Arrays; /** Initialize the GitRepositoryManager configuration section. */ @Singleton class InitBugzilla extends InitIts { private final String pluginName; private final Section.Factory sections; + private final InitFlags flags; private Section bugzilla; private Section bugzillaComment; private String bugzillaUrl; @@ -45,21 +48,50 @@ @Inject InitBugzilla(@PluginName String pluginName, ConsoleUI ui, Section.Factory sections, AllProjectsConfig allProjectsConfig, - AllProjectsNameOnInitProvider allProjects) { + AllProjectsNameOnInitProvider allProjects, InitFlags flags) { super(pluginName, "Bugzilla", ui, allProjectsConfig, allProjects); this.pluginName = pluginName; this.sections = sections; + this.flags = flags; } @Override public void run() throws IOException, ConfigInvalidException { super.run(); + ui.message("\n"); + ui.header("Bugzilla connectivity"); + + if (!pluginName.equalsIgnoreCase("bugzilla") + && !flags.cfg.getSections().contains(pluginName) + && flags.cfg.getSections().contains("bugzilla")) { + ui.message("A Bugzilla configuration for the 'hooks-bugzilla' plugin was found.\n"); + if (ui.yesno(true, "Copy it for the '%s' plugin?", pluginName)) { + for (String n : flags.cfg.getNames("bugzilla")) { + flags.cfg.setStringList(pluginName, null, n, + Arrays.asList(flags.cfg.getStringList("bugzilla", null, n))); + } + for (String n : flags.cfg.getNames(COMMENT_LINK_SECTION, "bugzilla")) { + flags.cfg.setStringList(COMMENT_LINK_SECTION, pluginName, n, + Arrays.asList(flags.cfg.getStringList(COMMENT_LINK_SECTION, "bugzilla", n))); + } + + if (ui.yesno(false, "Remove configuration for 'hooks-bugzilla' plugin?")) { + flags.cfg.unsetSection("bugzilla", null); + flags.cfg.unsetSection(COMMENT_LINK_SECTION, "bugzilla"); + } + } else { + init(); + } + } else { + init(); + } + } + + private void init() { this.bugzilla = sections.get(pluginName, null); this.bugzillaComment = sections.get(COMMENT_LINK_SECTION, pluginName); - ui.message("\n"); - ui.header("Bugzilla connectivity"); do { enterBugzillaConnectivity();