From 7baf2e4cd2ef8082b74937e26de75b01e630b5d4 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 17 Apr 2014 12:00:35 -0400
Subject: [PATCH] Expose JGit 3.x receive pack settings as Gitblit settings

---
 src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java |   55 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 39 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
index b916bb1..6683e21 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
@@ -1,17 +1,19 @@
-// Copyright (C) 2009 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.
-
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ * 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.io.IOException;
@@ -40,6 +42,12 @@
 import com.google.common.base.Strings;
 import com.google.common.collect.Maps;
 
+/**
+ * Parses an SSH command-line and dispatches the command to the appropriate
+ * BaseCommand instance.
+ *
+ * @since 1.5.0
+ */
 public abstract class DispatchCommand extends BaseCommand implements ExtensionPoint {
 
 	private Logger log = LoggerFactory.getLogger(getClass());
@@ -89,6 +97,7 @@
 	 * registered within this method.
 	 *
 	 * @param user
+	 * @since 1.5.0
 	 */
 	protected abstract void setup(UserModel user);
 
@@ -318,6 +327,10 @@
 		return false;
 	}
 
+	public String getDescription() {
+		return getClass().getAnnotation(CommandMetaData.class).description();
+	}
+
 	@Override
 	public String usage() {
 		Set<String> cmds = new TreeSet<String>();
@@ -332,9 +345,9 @@
 				continue;
 			}
 
-			String displayName = name;
+			String displayName = name  + (meta.admin() ? "*" : "");
 			if (commandToAliases.containsKey(meta.name())) {
-				displayName = name + " (" + Joiner.on(',').join(commandToAliases.get(meta.name())) + ")";
+				displayName = name  + (meta.admin() ? "*" : "")+ " (" + Joiner.on(',').join(commandToAliases.get(meta.name())) + ")";
 			}
 			displayNames.put(name, displayName);
 
@@ -351,6 +364,16 @@
 		String format = "%-" + maxLength + "s   %s";
 
 		final StringBuilder usage = new StringBuilder();
+		if (!StringUtils.isEmpty(getName())) {
+			String title = getName().toUpperCase() + ": " + getDescription();
+			String b = com.gitblit.utils.StringUtils.leftPad("", title.length() + 2, '═');
+			usage.append('\n');
+			usage.append(b).append('\n');
+			usage.append(' ').append(title).append('\n');
+			usage.append(b).append('\n');
+			usage.append('\n');
+		}
+
 		if (!cmds.isEmpty()) {
 			usage.append("Available commands");
 			if (!getName().isEmpty()) {

--
Gitblit v1.9.1