Merge branch 'stable-2.12' into stable-2.13 * stable-2.12: Show more fields in ls-users command Add options to filter by active flag in ls-users command Escape double dashes in documentation Change-Id: I5f1177f6dbc0fe99ce702963eccd588fb008470a
diff --git a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java index 12c3b97..8ead5ad 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java +++ b/src/main/java/com/googlesource/gerrit/plugins/adminconsole/ListUsersCommand.java
@@ -20,28 +20,52 @@ import com.google.gerrit.extensions.annotations.RequiresCapability; import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gerrit.server.account.AccountResolver; import com.google.gerrit.sshd.CommandMetaData; import com.google.gerrit.sshd.SshCommand; +import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.ResultSet; import com.google.inject.Inject; +import org.kohsuke.args4j.Option; + @RequiresCapability(value=GlobalCapability.ADMINISTRATE_SERVER, scope=CapabilityScope.CORE) @CommandMetaData(name = "ls-users", description = "List users") public final class ListUsersCommand extends SshCommand { private ReviewDb db; + private final AccountResolver accountResolver; + + @Option(name = "--active-only", usage = "show only active users") + private boolean activeOnly = false; + + @Option(name = "--inactive-only", usage = "show only inactive users") + private boolean inactiveOnly = false; @Inject - ListUsersCommand(ReviewDb db) { + ListUsersCommand(ReviewDb db, + AccountResolver accountResolver) { this.db = db; + this.accountResolver = accountResolver; } @Override protected void run() throws UnloggedFailure, Failure, Exception { ResultSet<Account> accounts = db.accounts().all(); for (Account account : accounts) { + if (activeOnly && !account.isActive()) { + continue; + } + if (inactiveOnly && account.isActive()) { + continue; + } + String username = getUsername(account); String out = new StringBuilder() .append(account.getId().toString()) .append(" |") + .append(Strings.isNullOrEmpty(username) + ? "" + : " " + username) + .append(" |") .append(Strings.isNullOrEmpty(account.getFullName()) ? "" : " " + account.getFullName()) @@ -49,8 +73,19 @@ .append(Strings.isNullOrEmpty(account.getPreferredEmail()) ? "" : " " + account.getPreferredEmail()) + .append(" |") + .append(account.isActive() + ? " active" + : " inactive") .toString(); stdout.println(out); } } + + private String getUsername(Account account) throws OrmException { + String id = account.getId().toString(); + Account accountFromResolver = accountResolver.find(db, id); + return accountFromResolver == null ? null + : accountFromResolver.getUserName(); + } }
diff --git a/src/main/resources/Documentation/cmd-ls-users.md b/src/main/resources/Documentation/cmd-ls-users.md index a3ead52..db4aa9b 100644 --- a/src/main/resources/Documentation/cmd-ls-users.md +++ b/src/main/resources/Documentation/cmd-ls-users.md
@@ -15,10 +15,13 @@ OPTIONS ------- +`--active-only` +> Show only active users ---help +`--inactive-only` +> Show only inactive users --h +`--help, -h` > Display usage information. ACCESS
diff --git a/src/main/resources/Documentation/cmd-show-account.md b/src/main/resources/Documentation/cmd-show-account.md index c1455ec..96c3bba 100644 --- a/src/main/resources/Documentation/cmd-show-account.md +++ b/src/main/resources/Documentation/cmd-show-account.md
@@ -20,24 +20,22 @@ OPTIONS ------- -user +`user` > User to look up: This can be in one of several formats: LastName,\\\\ FirstName, email\@address.com, account id or an user name. Be sure to double-escape spaces. Case-sensitive ---show-groups +`--show-groups` > Show all groups user is a member of? ---filter-groups +`--filter-groups` > Filter group list? ---filter-string +`--filter-string` > String to perform group filtering on. Does not currently support regex. Case-insensitive. ---show-keys +`--show-keys` > Show users ssh public keys? ---help - --h +`--help, -h` > Display usage information. ACCESS
diff --git a/src/main/resources/Documentation/cmd-show-repo-access.md b/src/main/resources/Documentation/cmd-show-repo-access.md index 2ecd376..fa8d3b0 100644 --- a/src/main/resources/Documentation/cmd-show-repo-access.md +++ b/src/main/resources/Documentation/cmd-show-repo-access.md
@@ -19,14 +19,13 @@ OPTIONS ------- -repository +`repository` > Repository to show access for --w +`-w` > Display without line width truncation ---help --h +`--help, -h` > Display usage information. ACCESS
diff --git a/src/main/resources/Documentation/cmd-show-repo-account-access.md b/src/main/resources/Documentation/cmd-show-repo-account-access.md index e59913b..9743fda 100644 --- a/src/main/resources/Documentation/cmd-show-repo-account-access.md +++ b/src/main/resources/Documentation/cmd-show-repo-account-access.md
@@ -19,17 +19,16 @@ OPTIONS ------- -repository +`repository` > Repository to show access for ---user +`--user` > User to look up: This can be in one of several formats: LastName,\\\\ FirstName, email\@address.com, account id or an user name. Be sure to double-escape spaces. Case-sensitive --w +`-w` > Display without line width truncation ---help --h +`--help, -h` > Display usage information. ACCESS