From 5593a12621f7ba371f57cb6f95f5f945ac34d27b Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 10 Feb 2015 09:34:41 +0000
Subject: [PATCH] OPENDJ-1242 (CR-5982) Enable dsconfig to generate doc for properties changed through subcommand options

---
 opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java b/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
index c75d28d..57f234e 100644
--- a/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
+++ b/opendj-cli/src/main/java/com/forgerock/opendj/cli/ArgumentParser.java
@@ -627,10 +627,57 @@
      */
     public String getUsage() {
         final StringBuilder buffer = new StringBuilder();
-        getUsage(buffer);
+        usageOrVersionDisplayed = true;
+        if (System.getProperty("org.forgerock.opendj.gendoc") != null) {
+            toRefSect2(buffer);
+        } else {
+            getUsage(buffer);
+        }
         return buffer.toString();
     }
 
+    private void toRefSect2(StringBuilder sb) {
+        final String scriptName = getScriptName();
+        if (scriptName == null) {
+            throw new RuntimeException("The script name should have been set via the environment property '"
+                    + PROPERTY_SCRIPT_NAME + "'.");
+        }
+
+        sb.append("<refsect2 xml:id=\"").append(scriptName).append("\">").append(EOL);
+        sb.append(" <title>").append(scriptName).append("</title>").append(EOL);
+        sb.append(" <para>").append(getToolDescription()).append("</para>").append(EOL);
+
+        if (!argumentList.isEmpty()) {
+            sb.append(" <variablelist>").append(EOL);
+            for (Argument a : argumentList) {
+                sb.append("  <varlistentry>").append(EOL);
+                sb.append("    <term><option>");
+                final Character shortID = a.getShortIdentifier();
+                if (shortID != null) {
+                    sb.append("-").append(shortID.charValue());
+                }
+                final String longID = a.getLongIdentifier();
+                if (shortID != null && longID != null) {
+                    sb.append(" | ");
+                }
+                if (longID != null) {
+                    sb.append("--").append(longID);
+                }
+                if (a.needsValue()) {
+                    sb.append(" ").append(a.getValuePlaceholder());
+                }
+                sb.append("</option></term>").append(EOL);
+                sb.append("    <listitem>").append(EOL);
+                sb.append("      <para>").append(a.getDescription()).append("</para>").append(EOL);
+                sb.append("    </listitem>").append(EOL);
+                sb.append("  </varlistentry>").append(EOL);
+            }
+            sb.append(" </variablelist>").append(EOL);
+        }
+
+        sb.append("</refsect2>").append(EOL);
+    }
+
     /**
      * Writes message to the usage output stream.
      *
@@ -652,8 +699,6 @@
      *            The buffer to which the usage information should be appended.
      */
     private void getUsage(final StringBuilder buffer) {
-        usageOrVersionDisplayed = true;
-
         buffer.append(getLocalizableScriptName());
         if (allowsTrailingArguments) {
             buffer.append(" ");

--
Gitblit v1.10.0