2018-07-24 00:06:04 +02:00
|
|
|
#!/usr/bin/env bash
|
2018-05-17 06:46:22 +02:00
|
|
|
# Needs bash for process substitition, ie <(
|
|
|
|
|
|
|
|
if [ $# != 2 ]; then
|
2019-08-10 12:50:31 +02:00
|
|
|
echo "Usage $0 <command> <markdown.md>" >&2
|
2018-05-17 06:46:22 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
get_cmd_opts()
|
|
|
|
{
|
|
|
|
# Trim out -- after first one (--option mentioned in help!)
|
doc: format markdown correctly.
There are no definition lists in Markdown, and lists get mangled if
they follow immediately: they need a line between them.
So use bullets for options, and use an indent so the text gets in the
line below.
Here's a before-and-after example:
```diff
--- /tmp/after 2022-07-20 21:55:54.355487769 +0930
+++ /tmp/after2 2022-07-20 21:58:17.305642576 +0930
@@ -10,38 +10,71 @@
lightning-cli sends commands to the lightning daemon.
OPTIONS
- --lightning-dir=DIR Set the directory for the lightning daemon we're talking to; defaults to $HOME/.lightning.
+ • --lightning-dir=DIR
- --conf=PATH Sets configuration file (default: lightning-dir/config ).
+ Set the directory for the lightning daemon we're talking to; defaults to $HOME/.lightning.
- --network=network --mainnet --testnet --signet Sets network explicitly.
+ • --conf=PATH
- --rpc-file=FILE Named pipe to use to talk to lightning daemon: default is lightning-rpc in the lightning directory.
+ Sets configuration file (default: lightning-dir/config ).
- --keywords/-k Use format key=value for parameters in any order
+ • --network=network
- --order/-o Follow strictly the order of parameters for the command
+ • --mainnet
- --json/-J Return result in JSON format (default unless help command, or result contains a format-hint field).
+ • --testnet
- --raw/-R Return raw JSON directly as lightningd replies; this can be faster for large requests.
+ • --signet
- --human-readable/-H Return result in human-readable output.
+ Sets network explicitly.
- --flat/-F Return JSON result in flattened one-per-line output, e.g. { "help": [ { "command": "check" } ] } would become
+ • --rpc-file=FILE
+
+ Named pipe to use to talk to lightning daemon: default is lightning-rpc in the lightning directory.
+
+ • --keywords/-k
+
+ Use format key=value for parameters in any order
+
+ • --order/-o
+
+ Follow strictly the order of parameters for the command
+
+ • --json/-J
+
+ Return result in JSON format (default unless help command, or result contains a format-hint field).
+
+ • --raw/-R
+
+ Return raw JSON directly as lightningd replies; this can be faster for large requests.
+
+ • --human-readable/-H
+
+ Return result in human-readable output.
+
+ • --flat/-F
+
+ Return JSON result in flattened one-per-line output, e.g. { "help": [ { "command": "check" } ] } would become
help[0].command=check. This is useful for simple scripts which want to find a specific output field without parsing
JSON.
- --notifications/-N=LEVEL If LEVEL is 'none', then never print out notifications. Otherwise, print out notifications of
- LEVEL or above (one of io, debug, info (the default), unusual or broken: they are prefixed with # .
+ • --notifications/-N=LEVEL
+
+ If LEVEL is 'none', then never print out notifications. Otherwise, print out notifications of LEVEL or above (one of
+ io, debug, info (the default), unusual or broken: they are prefixed with # .
+
+ • --help/-h
+
+ Pretty-print summary of options to standard output and exit. The format can be changed using -F, -R, -J, -H etc.
+
+ • --version/-V
- --help/-h Pretty-print summary of options to standard output and exit. The format can be changed using -F, -R, -J, -H
- etc.
+ Print version number to standard output and exit.
- --version/-V Print version number to standard output and exit.
+ • allow-deprecated-apis=BOOL
- allow-deprecated-apis=BOOL Enable deprecated options. It defaults to true, but you should set it to false when testing to
- ensure that an upgrade won't break your configuration.
+ Enable deprecated options. It defaults to true, but you should set it to false when testing to ensure that an upgrade
+ won't break your configuration.
COMMANDS
lightning-cli simply uses the JSON RPC interface to talk to lightningd, and prints the results. Thus the commands avail‐
@@ -60,13 +93,13 @@
this is not encouraged.
EXAMPLES
- 1. List commands
+ 1. List commands:
- lightning-cli help
+ • lightning-cli help
- 2. Fund a 10k sat channel using uncomfirmed outputs
+ 2. Fund a 10k sat channel using uncomfirmed outputs:
- lightning-cli --keywords fundchannel id=028f...ae7d amount=10000sat minconf=0
+ • lightning-cli --keywords fundchannel id=028f...ae7d amount=10000sat minconf=0
BUGS
This manpage documents how it should work, not how it does work. The pretty printing of results isn't pretty.
```
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-09-05 23:32:09 +02:00
|
|
|
$1 --help | grep '^\*' | sed 's/[ ].*--.*//' | while IFS=$'\n' read -r opt; do
|
2018-05-17 06:46:22 +02:00
|
|
|
case "$opt" in
|
|
|
|
# We don't document dev options.
|
|
|
|
--dev*)
|
|
|
|
;;
|
|
|
|
--*=*|--*' <arg>'*)
|
|
|
|
echo "${opt%%[ =]*}=" | cut -c3-
|
|
|
|
;;
|
|
|
|
--*)
|
|
|
|
echo "${opt%%[ |]*}" | cut -c3-
|
|
|
|
;;
|
|
|
|
-*\|--*)
|
|
|
|
opt=${opt##*|}
|
|
|
|
echo "${opt%%[ |]*}" | cut -c3-
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
CMD_OPTNAMES=$(get_cmd_opts "$1" | sort)
|
|
|
|
|
|
|
|
# Now, gather (long) opt names from man page, make sure they match.
|
2019-08-10 12:50:31 +02:00
|
|
|
MAN_OPTNAMES=$(sed -E -n 's/^ \*\*(--)?([^*/]*)\*\*(=?).*/\2\3/p' < "$2" | sort)
|
2018-05-17 06:46:22 +02:00
|
|
|
|
2021-11-04 15:13:43 +01:00
|
|
|
# Remove undocumented proprieties, usually these proprieties are
|
|
|
|
# under experimental phases.
|
|
|
|
for flag in $(jq '.flags[]' <doc/undoc-flags.json) ; do
|
|
|
|
# Remove the quotes from the string, so the code will remove
|
|
|
|
# the first and last char in the string.
|
|
|
|
FLAG=$(sed 's/.//;s/.$//' <(echo "$flag"))
|
|
|
|
CMD_OPTNAMES=$(sed "/$FLAG=/d" <(echo "$CMD_OPTNAMES"))
|
|
|
|
done
|
|
|
|
|
|
|
|
|
2018-05-17 06:46:22 +02:00
|
|
|
if [ "$CMD_OPTNAMES" != "$MAN_OPTNAMES" ]; then
|
|
|
|
echo "diff of command names vs manpage names":
|
|
|
|
diff -u <(echo "$CMD_OPTNAMES") <(echo "$MAN_OPTNAMES")
|
|
|
|
exit 2
|
|
|
|
fi
|