From b2ef03a213de13fe18874781458c8391aa6586f9 Mon Sep 17 00:00:00 2001 From: James Moger Date: Sun, 16 Mar 2014 16:04:07 -0400 Subject: [PATCH] Add a simple repository list command --- .../transport/ssh/SshCommandFactory.java | 2 + .../ssh/commands/ListRepositoriesCommand.java | 72 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 src/main/java/com/gitblit/transport/ssh/commands/ListRepositoriesCommand.java diff --git a/src/main/java/com/gitblit/transport/ssh/SshCommandFactory.java b/src/main/java/com/gitblit/transport/ssh/SshCommandFactory.java index df288db0..b8dd5b9f 100644 --- a/src/main/java/com/gitblit/transport/ssh/SshCommandFactory.java +++ b/src/main/java/com/gitblit/transport/ssh/SshCommandFactory.java @@ -42,6 +42,7 @@ import com.gitblit.models.UserModel; import com.gitblit.transport.ssh.commands.AddKeyCommand; import com.gitblit.transport.ssh.commands.CreateRepository; import com.gitblit.transport.ssh.commands.DispatchCommand; +import com.gitblit.transport.ssh.commands.ListRepositoriesCommand; import com.gitblit.transport.ssh.commands.Receive; import com.gitblit.transport.ssh.commands.RemoveKeyCommand; import com.gitblit.transport.ssh.commands.ReviewCommand; @@ -89,6 +90,7 @@ public class SshCommandFactory implements CommandFactory { gitblitCmd.registerCommand(user, VersionCommand.class); gitblitCmd.registerCommand(user, AddKeyCommand.class); gitblitCmd.registerCommand(user, RemoveKeyCommand.class); + gitblitCmd.registerCommand(user, ListRepositoriesCommand.class); gitblitCmd.registerCommand(user, ReviewCommand.class); gitblitCmd.registerCommand(user, CreateRepository.class); diff --git a/src/main/java/com/gitblit/transport/ssh/commands/ListRepositoriesCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/ListRepositoriesCommand.java new file mode 100644 index 00000000..7c58e7fc --- /dev/null +++ b/src/main/java/com/gitblit/transport/ssh/commands/ListRepositoriesCommand.java @@ -0,0 +1,72 @@ +/* + * Copyright 2014 gitblit.com. + * + * 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.gitblit.transport.ssh.commands; + +import java.text.MessageFormat; +import java.text.SimpleDateFormat; +import java.util.List; + +import org.kohsuke.args4j.Option; +import org.parboiled.common.StringUtils; + +import com.gitblit.manager.IGitblit; +import com.gitblit.models.RepositoryModel; +import com.gitblit.models.UserModel; +import com.gitblit.transport.ssh.CommandMetaData; + +@CommandMetaData(name = "repositories", description = "List the available repositories") +public class ListRepositoriesCommand extends SshCommand { + + @Option(name = "--verbose", aliases = { "-v" }, usage = "verbose") + private boolean verbose; + + @Override + public void run() { + IGitblit gitblit = ctx.getGitblit(); + UserModel user = ctx.getClient().getUser(); + List repositories = gitblit.getRepositoryModels(user); + int nameLen = 0; + int descLen = 0; + for (RepositoryModel repo : repositories) { + int len = repo.name.length(); + if (len > nameLen) { + nameLen = len; + } + if (!StringUtils.isEmpty(repo.description)) { + len = repo.description.length(); + if (len > descLen) { + descLen = len; + } + } + } + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + String pattern; + if (verbose) { + pattern = MessageFormat.format("%-{0,number,0}s\t%-{1,number,0}s\t%s", nameLen, descLen); + } else { + pattern = "%s"; + } + + for (RepositoryModel repo : repositories) { + stdout.println(String.format(pattern, + repo.name, + repo.description == null ? "" : repo.description, + df.format(repo.lastChange))); + } + } +} -- 2.39.5