Merge "Add init step for installing the 'Verified' label"

This commit is contained in:
Shawn Pearce 2013-12-22 18:07:46 +00:00 committed by Gerrit Code Review
commit d7ec6703e7
3 changed files with 72 additions and 2 deletions

View File

@ -93,7 +93,16 @@ public class AllProjectsConfig extends VersionedMetaData {
throw new UnsupportedOperationException();
}
void save(String message) throws IOException {
save(new PersonIdent("Gerrit Initialization", "init@gerrit"), message);
}
public void save(String pluginName, String message) throws IOException {
save(new PersonIdent(pluginName, pluginName + "@gerrit"),
"Update from plugin " + pluginName + ": " + message);
}
private void save(PersonIdent ident, String msg) throws IOException {
File path = getPath();
if (path == null) {
throw new IOException("All-Projects does not exist.");
@ -115,8 +124,6 @@ public class AllProjectsConfig extends VersionedMetaData {
return;
}
PersonIdent ident = new PersonIdent(pluginName, pluginName + "@gerrit");
String msg = "Update from plugin " + pluginName + ": " + message;
CommitBuilder commit = new CommitBuilder();
commit.setAuthor(ident);
commit.setCommitter(ident);

View File

@ -0,0 +1,62 @@
// Copyright (C) 2013 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.pgm.init;
import com.google.gerrit.pgm.util.ConsoleUI;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.eclipse.jgit.lib.Config;
import java.util.Arrays;
@Singleton
public class InitLabels implements InitStep {
private static final String KEY_LABEL = "label";
private static final String KEY_FUNCTION = "function";
private static final String KEY_VALUE = "value";
private static final String LABEL_VERIFIED = "Verified";
private final ConsoleUI ui;
private final AllProjectsConfig allProjectsConfig;
private boolean installVerified;
@Inject
InitLabels(ConsoleUI ui, AllProjectsConfig allProjectsConfig) {
this.ui = ui;
this.allProjectsConfig = allProjectsConfig;
}
@Override
public void run() throws Exception {
Config cfg = allProjectsConfig.load();
if (cfg == null || !cfg.getSubsections(KEY_LABEL).contains(LABEL_VERIFIED)) {
ui.header("Review Labels");
installVerified = ui.yesno(false, "Install Verified label");
}
}
@Override
public void postRun() throws Exception {
Config cfg = allProjectsConfig.load();
if (installVerified) {
cfg.setString(KEY_LABEL, LABEL_VERIFIED, KEY_FUNCTION, "MaxWithBlock");
cfg.setStringList(KEY_LABEL, LABEL_VERIFIED, KEY_VALUE,
Arrays.asList(new String[] {"-1 Fails", " 0 No score", "+1 Verified"}));
allProjectsConfig.save("Configure 'Verified' label");
}
}
}

View File

@ -48,6 +48,7 @@ public class InitModule extends FactoryModule {
}
step().to(InitIndex.class);
step().to(InitAuth.class);
step().to(InitLabels.class);
step().to(InitSendEmail.class);
if (standalone) {
step().to(InitContainer.class);