]> granicus.if.org Git - curl/commitdiff
cmdline-opts: support generating the --help output
authorDaniel Stenberg <daniel@haxx.se>
Tue, 15 Nov 2016 08:08:50 +0000 (09:08 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 15 Nov 2016 08:08:50 +0000 (09:08 +0100)
14 files changed:
docs/cmdline-opts/MANPAGE.md
docs/cmdline-opts/cookie-jar.d
docs/cmdline-opts/cookie.d
docs/cmdline-opts/gen.pl
docs/cmdline-opts/http1.0.d
docs/cmdline-opts/http1.1.d
docs/cmdline-opts/http2-prior-knowledge.d
docs/cmdline-opts/http2.d
docs/cmdline-opts/next.d
docs/cmdline-opts/no-alpn.d
docs/cmdline-opts/no-npn.d
docs/cmdline-opts/progress-bar.d
docs/cmdline-opts/tlsv1.d
docs/cmdline-opts/verbose.d

index d5077636a348d1b7407ca7cea8b37f4e165d9030..f776f81f01a85697f8bd067517456b6daf15a9c7 100644 (file)
@@ -26,6 +26,7 @@ Each file has a set of meta-data and a body of text.
     Mutexed: (space separated list of options this overrides)
     Requires: (space separated list of features this option requres)
     See-also: (space separated list of related options)
+    Help: (short text for the --help output for this option)
     --- (end of meta-data)
 
 ### Body
@@ -37,11 +38,15 @@ correct markup that shows both short and long version.
 ## Header
 
 `page-header` is the nroff formatted file that will be output before the
-generated options output.
+generated options output for the master man page.
 
 ## Generate
 
-`perl gen.pl`
+`./gen.pl mainpage`
 
-This command outputs an nroff file, meant to become `curl.1`. The full curl
-man page.
+This command outputs a single huge nroff file, meant to become `curl.1`. The
+full curl man page.
+
+`./gen.pl listhelp`
+
+Generates a full `curl --help` output for all known command line options.
index 50bfa61c013b027326d7bac0fbc1712bba9d9035..da79777eb6d5875f0338366d11fbbec7b16f171a 100644 (file)
@@ -2,6 +2,7 @@ Short: c
 Long: cookie-jar
 Arg: <filename>
 Protocols: HTTP
+Help: Write cookies to <filename> after operation
 ---
 Specify to which file you want curl to write all cookies after a completed
 operation. Curl writes all cookies from its in-memory cookie storage to the
index f97fbdeec575fadbbf79a4e7765d86f909707248..383adda6e844251526f32a05a69a7a7dbd807e16 100644 (file)
@@ -1,7 +1,8 @@
 Short: b
 Long: cookie
-Arg: <name=data>
+Arg: <data>
 Protocols: HTTP
+Help: Send cookies from string/file
 ---
 Pass the data to the HTTP server in the Cookie header. It is supposedly
 the data previously received from the server in a "Set-Cookie:" line.  The
index ae52bfa84e3583279cd3d3c241492fa7a6ba6967..9bdfa4c316ece9279705bcea7dd3a999d5c7c00c 100755 (executable)
@@ -8,6 +8,8 @@ closedir $dh;
 
 my %optshort;
 my %optlong;
+my %helplong;
+my %arglong;
 
 # get the long name version, return the man page string
 sub manpageify {
@@ -165,7 +167,8 @@ sub getshortlong {
     open(F, "<$f");
     my $short;
     my $long;
-
+    my $help;
+    my $arg;
     while(<F>) {
         if(/^Short: (.)/i) {
             $short=$1;
@@ -173,6 +176,12 @@ sub getshortlong {
         elsif(/^Long: (.*)/i) {
             $long=$1;
         }
+        elsif(/^Help: (.*)/i) {
+            $help=$1;
+        }
+        elsif(/^Arg: (.*)/i) {
+            $arg=$1;
+        }
         elsif(/^---/) {
             last;
         }
@@ -183,6 +192,8 @@ sub getshortlong {
     }
     if($long) {
         $optlong{$long}=$short;
+        $helplong{$long}=$help;
+        $arglong{$long}=$arg;
     }
 }
 
@@ -202,15 +213,59 @@ sub header {
     printdesc(@d);
 }
 
+sub listhelp {
+    foreach my $f (sort keys %helplong) {
+        my $long = $f;
+        my $short = $optlong{$long};
+        my $opt;
+
+        if(defined($short) && $long) {
+            $opt = "-$short, --$long";
+        }
+        elsif($long && !$short) {
+            $opt = "    --$long";
+        }
+
+        my $arg = $arglong{$long};
+        if($arg) {
+            $opt .= " $arg";
+        }
+
+        printf " %-19s %s\n", $opt, $helplong{$f};
+    }
+}
+
+sub mainpage {
+    # show the page header
+    header();
+
+    # output docs for all options
+    foreach my $f (sort @s) {
+        single($f);
+    }
+}
+
+sub getargs {
+    my $f;
+    do {
+        $f = shift @ARGV;
+        if($f eq "mainpage") {
+            mainpage();
+            return;
+        }
+        elsif($f eq "listhelp") {
+            listhelp();
+            return;
+        }
+    } while($f);
+
+    print "Usage: gen.pl <mainpage/listhelp>\n";
+}
+
 #------------------------------------------------------------------------
 
 # learn all existing options
 indexoptions();
 
-# show the page header
-header();
+getargs();
 
-# output docs for all options
-foreach my $f (sort @s) {
-    single($f);
-}
index 1bcd67d57e5641c7970884e15ba07367dd88d59c..d9bbd76f0fa12846cc60a9689738f0a054520180 100644 (file)
@@ -4,6 +4,7 @@ Tags: Versions
 Protocols: HTTP
 Added:
 Mutexed: http1.1 http2
+Help: Use HTTP 1.0
 ---
 Tells curl to use HTTP version 1.0 instead of using its internally preferred
 HTTP version.
index 2ee2a4a3010bbd1adb1d7b52a387e0fdba389293..fea1ada95ce17684f8e7fec03838338598a411f3 100644 (file)
@@ -4,5 +4,6 @@ Tags: Versions
 Protocols: HTTP
 Added: 7.33.0
 Mutexed: http1.0 http2
+Help: Use HTTP 1.1
 ---
 Tells curl to use HTTP version 1.1.
index 0fb42354b9bb85bc10e845dc936e39513fded0e3..5ae95684cfd263d5b1e3dd7c48dc33f31a1da711 100644 (file)
@@ -5,6 +5,7 @@ Protocols: HTTP
 Added: 7.49.0
 Mutexed: http1.1 http1.0 http2
 Requires: HTTP/2
+Help: Use HTTP 2 without HTTP/1.1 Upgrade
 ---
 Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1
 Upgrade. It requires prior knowledge that the server supports HTTP/2 straight
index ea396dbd46074d811be969c763e8e1a27f98fc4c..4d1bb2a3f2d119a1e03c9419781d774887093e75 100644 (file)
@@ -6,5 +6,6 @@ Added: 7.33.0
 Mutexed: http1.1 http1.0 http2-prior-knowledge
 Requires: HTTP/2
 See-also: no-alpn
+Help: Use HTTP 2
 ---
 Tells curl to use HTTP version 2.
index b1c00ba20612439f2d01e1ad1634e1f284ae3a5b..f368c1b7dfa2eac0169c74e16d878f268b52b3d1 100644 (file)
@@ -4,6 +4,7 @@ Tags:
 Protocols:
 Added: 7.36.0
 Magic: divider
+Help: Make next URL use its separate set of options
 ---
 Tells curl to use a separate operation for the following URL and associated
 options. This allows you to send several URL requests, each with their own
index 0a94cdff42c8845e67358725797901cffe2d6390..46cd68bc05ec7a6e299103448efa55c754009104 100644 (file)
@@ -6,6 +6,7 @@ Added: 7.36.0
 Mutexed:
 See-also: no-npn http2
 Requires: TLS
+Help: Disable the ALPN TLS extension
 ---
 Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built
 with an SSL library that supports ALPN. ALPN is used by a libcurl that supports
index 754c79aaa9a5c861cca5f09b8ef46740d7dc8c62..5ccfe33a91eb1b0279e22f23e0addebe6c2247aa 100644 (file)
@@ -6,6 +6,7 @@ Added: 7.36.0
 Mutexed:
 See-also: no-alpn http2
 Requires: TLS
+Help: Disable the NPN TLS extension
 ---
 Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
 with an SSL library that supports NPN. NPN is used by a libcurl that supports
index 6f964fd6b55be4cc334ff6cb5da3c26795895747..360690c17f2840a11b4250d04375425ad262594e 100644 (file)
@@ -1,7 +1,6 @@
 Short: #
 Long: progress-bar
-Tags:
-Protocols:
+Help: Disable the ALPN TLS extension
 ---
 Make curl display transfer progress as a simple progress bar instead of the
 standard, more informational, meter.
index 7c11abca5af046af1c4545b4cb72fc60aaccbdec..d96fd1cc183e2bd399a7fe12ce6b984a2aeed906 100644 (file)
@@ -6,6 +6,7 @@ Added:
 Mutexed: tlsv1.1 tlsv1.2
 Requires: TLS
 See-also: http1.1 http2
+Help: Use TLSv1.0 or greater
 ---
 Forces curl to use TLS version 1.x when negotiating with a remote TLS server.
 You can use options --tlsv1.0, --tlsv1.1, --tlsv1.2, and --tlsv1.3 to control
index 9c8693807ca9d4faeae0a4e8bef5bc78d9de7238..640c5a782a61926cf8869211d0c44eda63aa1009 100644 (file)
@@ -1,6 +1,7 @@
 Short: v
 Long: verbose
 Mutexed: trace trace-ascii
+Help: Make the operation more talkative
 ---
 Makes curl verbose during the operation. Useful for debugging and seeing
 what's going on "under the hood". A line starting with '>' means "header data"