diff options
author | James Moger <james.moger@gitblit.com> | 2014-03-22 20:52:54 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-04-10 18:58:10 -0400 |
commit | 5cc48016caf4de3ecce6fbf2f2a34d3bde99edb6 (patch) | |
tree | 88cf12b1fc83931e550e946a759847126062e341 /src | |
parent | 07fd0117bddd67e141d4c1f405e2a1e9f815c9e3 (diff) | |
download | gitblit-5cc48016caf4de3ecce6fbf2f2a34d3bde99edb6.tar.gz gitblit-5cc48016caf4de3ecce6fbf2f2a34d3bde99edb6.zip |
Support regex filtering the projects, repositories, and users list
Diffstat (limited to 'src')
3 files changed, 66 insertions, 6 deletions
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/ProjectsDispatcher.java b/src/main/java/com/gitblit/transport/ssh/gitblit/ProjectsDispatcher.java index 177102e4..212e7292 100644 --- a/src/main/java/com/gitblit/transport/ssh/gitblit/ProjectsDispatcher.java +++ b/src/main/java/com/gitblit/transport/ssh/gitblit/ProjectsDispatcher.java @@ -16,12 +16,16 @@ package com.gitblit.transport.ssh.gitblit; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.List; +import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; +import org.parboiled.common.StringUtils; import com.gitblit.manager.IGitblit; import com.gitblit.models.ProjectModel; +import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.transport.ssh.commands.CommandMetaData; import com.gitblit.transport.ssh.commands.DispatchCommand; @@ -47,17 +51,33 @@ public class ProjectsDispatcher extends DispatchCommand { @Option(name = "--tabbed", aliases = { "-t" }, usage = "as tabbed output") private boolean tabbed; + @Argument(index = 0, metaVar = "REGEX", usage = "regex filter expression") + protected String regexFilter; + @Override public void run() { IGitblit gitblit = getContext().getGitblit(); UserModel user = getContext().getClient().getUser(); List<ProjectModel> projects = gitblit.getProjectModels(user, false); + List<ProjectModel> filtered; + if (StringUtils.isEmpty(regexFilter)) { + // no regex filter + filtered = projects; + } else { + // regex filter the list + filtered = new ArrayList<ProjectModel>(); + for (ProjectModel p : projects) { + if (p.name.matches(regexFilter)) { + filtered.add(p); + } + } + } if (tabbed) { - asTabbed(projects); + asTabbed(filtered); } else { - asTable(projects); + asTable(filtered); } } diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/RepositoriesDispatcher.java b/src/main/java/com/gitblit/transport/ssh/gitblit/RepositoriesDispatcher.java index 329e95e2..ab974dc0 100644 --- a/src/main/java/com/gitblit/transport/ssh/gitblit/RepositoriesDispatcher.java +++ b/src/main/java/com/gitblit/transport/ssh/gitblit/RepositoriesDispatcher.java @@ -16,9 +16,12 @@ package com.gitblit.transport.ssh.gitblit; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.List; +import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; +import org.parboiled.common.StringUtils; import com.gitblit.manager.IGitblit; import com.gitblit.models.RepositoryModel; @@ -49,16 +52,33 @@ public class RepositoriesDispatcher extends DispatchCommand { @Option(name = "--tabbed", aliases = { "-t" }, usage = "as tabbed output") private boolean tabbed; + @Argument(index = 0, metaVar = "REGEX", usage = "regex filter expression") + protected String regexFilter; + @Override public void run() { IGitblit gitblit = getContext().getGitblit(); UserModel user = getContext().getClient().getUser(); List<RepositoryModel> repositories = gitblit.getRepositoryModels(user); + List<RepositoryModel> filtered; + if (StringUtils.isEmpty(regexFilter)) { + // no regex filter + filtered = repositories; + } else { + // regex filter the list + filtered = new ArrayList<RepositoryModel>(); + for (RepositoryModel r : repositories) { + if (r.name.matches(regexFilter)) { + filtered.add(r); + } + } + } + if (tabbed) { - asTabbed(repositories); + asTabbed(filtered); } else { - asTable(repositories); + asTable(filtered); } } diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/UsersDispatcher.java b/src/main/java/com/gitblit/transport/ssh/gitblit/UsersDispatcher.java index 1682ab48..ebe0a0a2 100644 --- a/src/main/java/com/gitblit/transport/ssh/gitblit/UsersDispatcher.java +++ b/src/main/java/com/gitblit/transport/ssh/gitblit/UsersDispatcher.java @@ -15,13 +15,16 @@ */ package com.gitblit.transport.ssh.gitblit; +import java.util.ArrayList; import java.util.List; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.Option; +import org.parboiled.common.StringUtils; import com.gitblit.manager.IGitblit; import com.gitblit.models.RegistrantAccessPermission; +import com.gitblit.models.RepositoryModel; import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; import com.gitblit.transport.ssh.commands.CommandMetaData; @@ -108,15 +111,32 @@ public class UsersDispatcher extends DispatchCommand { @Option(name = "--tabbed", aliases = { "-t" }, usage = "as tabbed output") private boolean tabbed; + @Argument(index = 0, metaVar = "REGEX", usage = "regex filter expression") + protected String regexFilter; + @Override public void run() { IGitblit gitblit = getContext().getGitblit(); List<UserModel> users = gitblit.getAllUsers(); + List<UserModel> filtered; + if (StringUtils.isEmpty(regexFilter)) { + // no regex filter + filtered = users; + } else { + // regex filter the list + filtered = new ArrayList<UserModel>(); + for (UserModel u : users) { + if (u.username.matches(regexFilter)) { + filtered.add(u); + } + } + } + if (tabbed) { - asTabbed(users); + asTabbed(filtered); } else { - asTable(users); + asTable(filtered); } } |