{"thread":{"id":"910","subject":"[PATCH] cg-help: dynamically list commands","startedAt":"2005-06-11T12:37:42Z","lastAt":"2005-06-11T12:37:42Z","messageCount":1,"participants":["Jonas Fonseca"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"4872","messageId":"20050611123742.GA1477@diku.dk","threadId":"910","inReplyTo":null,"subject":"[PATCH] cg-help: dynamically list commands","fromName":"Jonas Fonseca","fromEmail":"fonseca@diku.dk","sentAt":"2005-06-11T12:37:42Z","receivedAt":"2005-06-11T12:37:42Z","isPatch":true,"sender":{"key":"fonseca@diku.dk","avatar":"https://gravatar.com/avatar/f82f3ad698717c51873b020c750a92438c820a24056dc39fe4d07baa10a92264?d=mp&s=160"},"body":"Use code from the make-cogito-asciidoc script to make the command\nlisting dynamic and hopefully always up-to-date by grepping the\nUSAGE strings.\n\nSigned-off-by: Jonas Fonseca <fonseca@diku.dk>\n---\n\n cg-commit |    2 +-\n cg-help   |   47 +++++++++++++++++++++--------------------------\n 2 files changed, 22 insertions(+), 27 deletions(-)\n\ndiff --git a/cg-commit b/cg-commit\n--- a/cg-commit\n+++ b/cg-commit\n@@ -72,7 +72,7 @@\n # EDITOR::\n #\tThe editor used for entering revision log information.\n \n-USAGE=\"cg-commit [-mMESSAGE]... [-C] [-e | -E] [FILE]...\"\n+USAGE=\"cg-commit [-mMESSAGE]... [-C] [-e | -E] [FILE]... < MESSAGE\"\n \n . ${COGITO_LIB}cg-Xlib\n \ndiff --git a/cg-help b/cg-help\n--- a/cg-help\n+++ b/cg-help\n@@ -25,6 +25,25 @@ if [ \"$1\" ]; then\n \texit 1\n fi\n \n+bin_path=\"$(dirname $0)\"\n+\n+REGULAR_COMMANDS=\"$(ls $bin_path/cg-* | grep -v cg-admin- | grep -v cg-X)\"\n+ADVANCED_COMMANDS=\"$(ls $bin_path/cg-admin-*)\"\n+\n+print_command_listing()\n+{\n+\tfor command in \"$@\"; do\n+\t\tcmdname=$(basename $command)\n+\n+\t\tusage=$(sed -n '/^USAGE=/,0s/.*\\(cg-.*\\)\"/\\1/p' < $command)\n+\t\t# Some minimal sanity check that we didn't pick up some\n+\t\t# random binary named cg-*\n+\t\t[ \"$usage\" ] || continue\n+\t\tusage=$(echo \"$usage\" | sed 's/cg-[^ ]*//')\n+\t\tprintf \"\t%-17s %s\\n\" \"$cmdname\" \"$usage\"\n+\tdone\n+}\n+\n \n cat <<__END__\n The Cogito version control system  $(cg-version)\n@@ -32,34 +51,10 @@ The Cogito version control system  $(cg-\n Usage: cg-COMMAND [ARG]...\n \n Available commands:\n-\tcg-add\t\tFILE...\n-\tcg-branch-add\tBNAME SOURCE_LOC\n-\tcg-branch-ls\n-\tcg-cancel\n-\tcg-clone\t[-s] SOURCE_LOC [DESTDIR]\n-\tcg-commit\t[-m\"Commit message\"]... [-e | -E] [FILE]... < log message\n-\tcg-diff\t\t[-c] [-m] [-p] [-r FROM_ID[:TO_ID]] [FILE]...\n-\tcg-export\tDEST [TREE_ID]\n-\tcg-help\t\t[COMMAND]\n-\tcg-init\n-\tcg-log\t\t[-c] [-f] [-m] [-r FROM_ID[:TO_ID]] [FILE]...\n-\tcg-merge\t[-c] [-b BASE_ID] FROM_ID\n-\tcg-mkpatch\t[-m] [-s] [-r FROM_ID[:TO_ID]]\n-\tcg-patch\t\t\t< patch on stdin\n-\tcg-pull\t\t[BNAME]\n-\tcg-restore\t[FILE]...\n-\tcg-rm\t\tFILE...\n-\tcg-seek\t\t[COMMIT_ID]\n-\tcg-status\n-\tcg-tag\t\tTNAME [COMMIT_ID]\n-\tcg-tag-ls\n-\tcg-update\t[BNAME]\n-\tcg-version\n+$(print_command_listing $REGULAR_COMMANDS)\n \n Advanced (low-level or dangerous) commands:\n-\tcg-admin-ls\t[-t TREE_ID] [PATH]\n-\tcg-admin-lsobj\t[OBJTYPE]\n-\tcg-admin-uncommit [-t] [COMMIT_ID]\n+$(print_command_listing $ADVANCED_COMMANDS)\n \n These expressions can be used interchangably as \"ID\"s:\n \tempty string, \"this\" or \"HEAD\" (current HEAD)\n-- \nJonas Fonseca\n"}]}