From 1c8d96d71d1bae9188f2aa3d1237082afd47c649 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 06 Feb 2015 09:13:16 +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/SubCommandArgumentParser.java |   79 +++++++++++++++++++++++++++------------
 1 files changed, 54 insertions(+), 25 deletions(-)

diff --git a/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java b/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
index e06bd63..5734756 100644
--- a/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
+++ b/opendj-cli/src/main/java/com/forgerock/opendj/cli/SubCommandArgumentParser.java
@@ -1170,41 +1170,70 @@
                     + PROPERTY_SCRIPT_NAME + "'.");
         }
 
-        sb.append("<refsect2 xml:id=\"").append(scriptName).append("-").append(sc.getName()).append("\">").append(EOL);
-        sb.append(" <title>dsconfig ").append(sc.getName()).append("</title>").append(EOL);
+        final String idRef = scriptName + "-" + sc.getName();
+        final String nameRef = scriptName + " " + sc.getName();
+        sb.append("<refsect2 xml:id=\"").append(idRef).append("\">").append(EOL);
+        sb.append(" <title>").append(nameRef).append("</title>").append(EOL);
         sb.append(" <para>").append(sc.getDescription()).append("</para>").append(EOL);
 
         if (!sc.getArguments().isEmpty()) {
-            sb.append(" <variablelist>").append(EOL);
+            sb.append(" <refsect3 xml:id=\"").append(idRef).append("-options\">").append(EOL);
+            sb.append("   <title>Options</title>").append(EOL);
+            sb.append("   <variablelist>").append(EOL);
+            sb.append("     <para>").append(EOL);
+            sb.append("       The <command>").append(nameRef)
+              .append("</command> command supports the following options.").append(EOL);
+            sb.append("     </para>").append(EOL);
+            String nameOption = null;
             for (Argument a : sc.getArguments()) {
-                sb.append("  <varlistentry>").append(EOL);
-                sb.append("   <term><option>");
-                Character shortID = a.getShortIdentifier();
-                if (shortID != null) {
-                    sb.append("-").append(shortID.charValue());
+                sb.append("     <varlistentry>").append(EOL);
+                sb.append("       <term>");
+                final String option = getOption(a);
+                sb.append(option);
+                sb.append("</term>").append(EOL);
+                sb.append("       <listitem>").append(EOL);
+                sb.append("         <para>").append(a.getDescription()).append("</para>").append(EOL);
+                final String longID = a.getLongIdentifier();
+                if (!"set".equals(longID)
+                        && !"reset".equals(longID)
+                        && !"add".equals(longID)
+                        && !"remove".equals(longID)) {
+                    nameOption = option;
                 }
-                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);
                 if (subCommandUsageHandler != null) {
-                    subCommandUsageHandler.appendUsage(sb, sc, longID);
+                    subCommandUsageHandler.appendArgumentAdditionalInfo(sb, sc, a, nameOption);
                 }
-                sb.append("   </listitem>").append(EOL);
-                sb.append("  </varlistentry>").append(EOL);
+                sb.append("       </listitem>").append(EOL);
+                sb.append("     </varlistentry>").append(EOL);
             }
-            sb.append(" </variablelist>").append(EOL);
+            sb.append("   </variablelist>").append(EOL);
+            sb.append(" </refsect3>").append(EOL);
+        }
+        if (subCommandUsageHandler != null) {
+            subCommandUsageHandler.appendProperties(sb, sc);
         }
 
         sb.append("</refsect2>").append(EOL);
     }
+
+    private String getOption(Argument a) {
+        final StringBuilder sb = new StringBuilder();
+        sb.append("<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>");
+        return sb.toString();
+    }
 }

--
Gitblit v1.10.0