ls-groups: Support listing of groups for a user
Add a new option to the 'ls-groups' command that allows to list the groups for a certain user. Change-Id: Ie3833c7441b399466a9881e901e3540342e6b3f9 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
@@ -18,7 +18,9 @@ import com.google.gerrit.common.data.GroupDetail;
|
||||
import com.google.gerrit.common.data.GroupList;
|
||||
import com.google.gerrit.common.errors.NoSuchGroupException;
|
||||
import com.google.gerrit.server.account.VisibleGroups;
|
||||
import com.google.gerrit.reviewdb.Account;
|
||||
import com.google.gerrit.reviewdb.AccountGroup;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.project.ProjectControl;
|
||||
import com.google.gerrit.sshd.BaseCommand;
|
||||
import com.google.gwtorm.client.OrmException;
|
||||
@@ -37,6 +39,8 @@ public class ListGroupsCommand extends BaseCommand {
|
||||
@Inject
|
||||
private VisibleGroups.Factory visibleGroupsFactory;
|
||||
|
||||
@Inject
|
||||
private IdentifiedUser.GenericFactory userFactory;
|
||||
|
||||
@Option(name = "--project", aliases = {"-p"},
|
||||
usage = "projects for which the groups should be listed")
|
||||
@@ -48,6 +52,10 @@ public class ListGroupsCommand extends BaseCommand {
|
||||
@Option(name = "--type", usage = "type of group")
|
||||
private AccountGroup.Type groupType;
|
||||
|
||||
@Option(name = "--user", aliases = {"-u"},
|
||||
usage = "user for which the groups should be listed")
|
||||
private Account.Id user;
|
||||
|
||||
@Override
|
||||
public void start(final Environment env) throws IOException {
|
||||
startThread(new CommandRunnable() {
|
||||
@@ -62,12 +70,18 @@ public class ListGroupsCommand extends BaseCommand {
|
||||
private void display() throws Failure {
|
||||
final PrintWriter stdout = toPrintWriter(out);
|
||||
try {
|
||||
if (user != null && !projects.isEmpty()) {
|
||||
throw new UnloggedFailure(1, "fatal: --user and --project options are not compatible.");
|
||||
}
|
||||
|
||||
final VisibleGroups visibleGroups = visibleGroupsFactory.create();
|
||||
visibleGroups.setOnlyVisibleToAll(visibleToAll);
|
||||
visibleGroups.setGroupType(groupType);
|
||||
final GroupList groupList;
|
||||
if (!projects.isEmpty()) {
|
||||
groupList = visibleGroups.get(projects);
|
||||
} else if (user != null) {
|
||||
groupList = visibleGroups.get(userFactory.create(user));
|
||||
} else {
|
||||
groupList = visibleGroups.get();
|
||||
}
|
||||
|
Reference in New Issue
Block a user