From 2c02c892e3afe8dd1b29e1278ccc472ad4613843 Mon Sep 17 00:00:00 2001 From: Umgeher Torgersen Date: Wed, 26 Apr 2023 18:58:45 +0000 Subject: [PATCH 1/4] version 0.0 + creating basic workflow ( settings and tracking work ) + download git repos + find for pem, zip and pub files + creating raw report Squashed commit of the following: commit 114b748622636719fcd46c35ff00bff4ea5765b4 Author: Umgeher Torgersen Date: Wed Apr 26 18:57:38 2023 +0000 version 0.0 is done commit a2cfcda73639e5c09b30e2e704cffde5e3b9e6d5 Author: Umgeher Torgersen Date: Wed Apr 26 18:43:31 2023 +0000 0.1? commit cbbefc8c4ad112a9f5bbee03dd8b32d4da52541a Author: Umgeher Torgersen Date: Wed Apr 26 18:05:43 2023 +0000 seeking for pem, zip and pub files commit 5dcafdf9f77a3dc231068c2355b2b89990395788 Author: Umgeher Torgersen Date: Wed Apr 26 16:53:17 2023 +0000 rep-stats commit e911c19f0257fab391638b6f2b942dded825d7a1 Author: Umgeher Torgersen Date: Wed Apr 26 16:06:29 2023 +0000 just some sort commit 9ac24cc73116e0a0f944fa46e2f76cd3b189fd3c Author: Umgeher Torgersen Date: Wed Apr 26 16:02:53 2023 +0000 cmd_run stuff commit f49879b01ab47c837bcaab06b3826139f6a7ee9d Author: Umgeher Torgersen Date: Tue Apr 25 18:40:19 2023 +0000 draft commit 8d52cd2feb024702ed6142ad800b5c1c409383ac Author: Umgeher Torgersen Date: Tue Apr 25 16:47:08 2023 +0000 tree -> config url added commit e2f0061519f122b962f2f7a1b77d75d8b6cd0fa4 Author: Umgeher Torgersen Date: Tue Apr 25 16:31:15 2023 +0000 config: group add and delete commit 20768b0f4312d1e5c84fa2343cbac8fcbed1752e Author: Umgeher Torgersen Date: Tue Apr 25 16:21:12 2023 +0000 draft: some basic stuff --- gseeker | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100755 gseeker diff --git a/gseeker b/gseeker new file mode 100755 index 0000000..5f71d1f --- /dev/null +++ b/gseeker @@ -0,0 +1,265 @@ +#!/bin/sh + +### DEFINE + +VERSION="0.0" +GSEEKER_HOME="$HOME/.gseeker" +GSEEKER_REPORTS="$GSEEKER_HOME/reports" +GSEEKER_TMPDIR="$GSEEKER_HOME/tmp/pid_$$" +GSEEKER_TREPORT="$GSEEKER_TMPDIR/report" +GSEEKER_CONFIG="$GSEEKER_HOME/config" +GSEEKER_TRACKER="$GSEEKER_HOME/tracker" + +### + +cleanup() { + rm -rf $GSEEKER_TMPDIR +} + +cmd_tree() { + case $1 in + config ) + cmd_tree_config $* + ;; + run ) + cmd_tree_run $* + ;; + show ) + cmd_tree_show $* + ;; + * ) + echo "usage: $0 []" + echo "" + echo "These are common gseeker commands used in various situations:" + echo "" + echo " config add and delete settings" + echo " show show metadata" + echo "" + echo "See '$0 help ' to read about a specific subcommand." + ;; + esac +} + +cmd_tree_config() { + case $2 in + group ) + cmd_tree_config_group $* + ;; + url ) + cmd_tree_config_url $* + ;; + * ) + echo "usage: $0 config []" + echo "" + echo " group " + echo " url " + echo "" + echo "See '$0 help config ' to read about a specific subcommand." + ;; + esac +} + +cmd_tree_config_group() { + case $3 in + add ) + cmd_tree_config_group_add $* + ;; + del ) + cmd_tree_config_group_del $* + ;; + * ) + echo "usage: $0 config group []" + echo "" + echo " add " + echo " del " + echo "" + echo "See '$0 help config group ' to read about a specific subcommand." + ;; + esac +} + +cmd_tree_config_group_add() { + if [[ -n $4 ]]; then + HASH=$(sha1 -qs $4) + echo "group,name,$4,$HASH" >> $GSEEKER_CONFIG + else + echo "usage: $0 config group add " + fi +} + +cmd_tree_config_group_del() { + if [[ -n $4 ]]; then + sed -i "/group,name,$4,/d" $GSEEKER_CONFIG + else + echo "usage: $0 config group del " + fi +} + +cmd_tree_config_url() { + case $3 in + add ) + cmd_tree_config_url_add $* + ;; + del ) + cmd_tree_config_url_del $* + ;; + * ) + echo "usage: $0 config url []" + echo "" + echo "..." + echo "" + echo "See '$0 help config url ' to read about a specific subcommand." + ;; + esac +} + +cmd_tree_config_url_add() { + if [[ -n $4 && -n $5 ]]; then + echo "url,$(sha1 -qs $4),$(sha1 -qs $5),$4" >> $GSEEKER_CONFIG + else + echo "usage: $0 config url add " + fi +} + +cmd_tree_config_url_del() { + if [[ -n $4 && -n $5 ]]; then + sed -i "/url,$4,$(sha1 -qs $5),/d" $GSEEKER_CONFIG + else + echo "usage: $0 config url del " + fi +} + +cmd_tree_run() { + if [[ -n $2 ]]; then + GROUP_HASH=$(sha1 -qs $2) + + if [[ -n $(cat $GSEEKER_CONFIG | grep $GROUP_HASH) ]]; then + if [[ -n $3 ]]; then + if [[ -n $(cat $GSEEKER_CONFIG | grep $3) ]]; then + rep_run $GROUP_HASH $3 + else + echo "error: repo $3 not found" + fi + else + group_run $GROUP_HASH + fi + else + echo "error: group $2 not found" + fi + else + for GROUP in $(cat $GSEEKER_CONFIG | grep "group,name," | cut -f4 -d,); do + group_run $GROUP + done + fi +} + +cmd_tree_show() { + case $2 in + config ) + cat $GSEEKER_CONFIG + ;; + * ) + echo "usage: $0 show " + echo "" + echo " config -- show configurations" + ;; + esac +} + +group_run() { + for HASH in $(cat $GSEEKER_CONFIG | grep $1 | grep "url," | cut -f2 -d,); do + rep_run $1 $HASH + done +} + +main() { + setup + cmd_tree $* + cleanup +} + +rep_run() { + URL=$(cat $GSEEKER_CONFIG | grep "$2,$1" | cut -f4 -d,) + mkdir -p $GSEEKER_TMPDIR/$1/ + git clone $URL $GSEEKER_TMPDIR/$1/$2 + rep_stats $1 $2 +} + +rep_stats() { + FILE="$GSEEKER_TREPORT/repo_$2" + DATE=$(date +%s) + echo "date,$DATE" >> $FILE + echo "version,$VERSION" >> $FILE + echo "url,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep 'remote.origin.url=' | cut -f2 -d'=')" >> $FILE + echo "head,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep ' origin/HEAD' | sed 's/ origin\/HEAD -> origin\///g')" >> $FILE + echo "commit,last,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep 'commit ' | sed 's/commit //g')" >> $FILE + + for BRANCH in $(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep ' origin/' | grep -v 'HEAD' | sed 's/origin\///g'); do + echo "branch,$BRANCH" >> $FILE + done + + for LINE in $(cd $GSEEKER_TMPDIR/$1/$2 ; git shortlog -se | tr '\t' ',' | sed 's/ /_/g'); do + COMMITS=$(echo $LINE | cut -f1 -d, | sed 's/_//g') + NAME=$(echo $LINE | cut -f2 -d, | sed 's/_//g') + echo "shortlog,$EMAIL,$NAME,$COMMITS" >> $FILE + done + + $(cat $GSEEKER_TRACKER | grep "commit,number," | grep ",$2,$1" | cut -f3 -d, > $GSEEKER_TMPDIR/tracker_$2_$1) + $(cd $GSEEKER_TMPDIR/$1/$2 ; git log --oneline | nl | sort -rn | cut -f2 | cut -d" " -f1 > $GSEEKER_TMPDIR/cn_$2_$1) + + for CNUMBER in $(grep -Fvf $GSEEKER_TMPDIR/tracker_$2_$1 $GSEEKER_TMPDIR/cn_$2_$1); do + $(cd $GSEEKER_TMPDIR/$1/$2 ; git checkout $CNUMBER) + echo "commit,number,$CNUMBER" >> $FILE + F_PEM=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.pem") + + if [[ -n $F_PEM ]]; then + for TF in $F_PEM; do + HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) + + if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then + echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE + fi + done + fi + + F_ZIP=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.zip") + + if [[ -n $F_ZIP ]]; then + for TF in $F_ZIP; do + HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) + + if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then + echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE + fi + done + fi + + F_PUB=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.pub") + + if [[ -n $F_PUB ]]; then + for TF in $F_PUB; do + HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) + + if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then + echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE + fi + done + fi + + echo "commit,number,$CNUMBER,$2,$1" >> $GSEEKER_TRACKER + done + + cp $FILE "$GSEEKER_REPORTS/report-$DATE-$2-$1.gseeker" +} + +setup() { + test -d $GSEEKER_HOME || (mkdir -p $GSEEKER_HOME) + test -d $GSEEKER_REPORTS || (mkdir -p $GSEEKER_REPORTS) + test -d $GSEEKER_TMPDIR || (mkdir -p $GSEEKER_TMPDIR) + test -d $GSEEKER_TREPORT || (mkdir -p $GSEEKER_TREPORT) + test -f $GSEEKER_CONFIG || (touch $GSEEKER_CONFIG) + test -f $GSEEKER_TRACKER || (touch $GSEEKER_TRACKER) +} + +main $* From ed8045d0ac02f04eadcc48e85d448dc04631a6e3 Mon Sep 17 00:00:00 2001 From: Umgeher Torgersen Date: Wed, 26 Apr 2023 19:00:40 +0000 Subject: [PATCH 2/4] version 0.1 --- gseeker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gseeker b/gseeker index 5f71d1f..d665111 100755 --- a/gseeker +++ b/gseeker @@ -2,7 +2,7 @@ ### DEFINE -VERSION="0.0" +VERSION="0.1" GSEEKER_HOME="$HOME/.gseeker" GSEEKER_REPORTS="$GSEEKER_HOME/reports" GSEEKER_TMPDIR="$GSEEKER_HOME/tmp/pid_$$" From 4e4cc31c13364d784ebe14724f8590d08328e2f8 Mon Sep 17 00:00:00 2001 From: Umgeher Torgersen Date: Tue, 2 May 2023 12:05:27 +0000 Subject: [PATCH 3/4] version: 0.2 + replaced git info with "native git commands" + makefile created (install and uninstall recipes) + replace some X lines with one function (scan_file_alert) Squashed commit of the following: commit e397edce0ce785f3c8bd6cdca21cefc8ceab380d Author: Umgeher Torgersen Date: Tue May 2 12:03:05 2023 +0000 makefile! install and uninstall recipes commit 4c40647590e80297f05dbd2c072d80c90e45e8b6 Author: Umgeher Torgersen Date: Tue May 2 12:01:14 2023 +0000 git-info replaced commit 96702ab0efb760c9261eb2a24351c869b2202258 Author: Umgeher Torgersen Date: Fri Apr 28 20:29:30 2023 +0000 size pack added commit 123ee4e8b61e583d8f37bc8fee5d1fb0abb9d9f5 Author: Umgeher Torgersen Date: Fri Apr 28 20:10:04 2023 +0000 better code: scan file alert --- gseeker | 66 +++++++++++++++++++++----------------------------------- makefile | 10 +++++++++ 2 files changed, 34 insertions(+), 42 deletions(-) create mode 100644 makefile diff --git a/gseeker b/gseeker index d665111..4d14650 100755 --- a/gseeker +++ b/gseeker @@ -2,7 +2,7 @@ ### DEFINE -VERSION="0.1" +VERSION="0.2" GSEEKER_HOME="$HOME/.gseeker" GSEEKER_REPORTS="$GSEEKER_HOME/reports" GSEEKER_TMPDIR="$GSEEKER_HOME/tmp/pid_$$" @@ -190,11 +190,12 @@ rep_stats() { DATE=$(date +%s) echo "date,$DATE" >> $FILE echo "version,$VERSION" >> $FILE - echo "url,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep 'remote.origin.url=' | cut -f2 -d'=')" >> $FILE - echo "head,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep ' origin/HEAD' | sed 's/ origin\/HEAD -> origin\///g')" >> $FILE - echo "commit,last,$(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep 'commit ' | sed 's/commit //g')" >> $FILE + echo "url,$(cd $GSEEKER_TMPDIR/$1/$2 ; git config --list | grep 'remote.origin.url=' | cut -f2 -d'=')" >> $FILE + echo "head,$(cd $GSEEKER_TMPDIR/$1/$2 ; git branch -r | grep ' origin/HEAD' | sed 's/ origin\/HEAD -> origin\///g')" >> $FILE + echo "commit,last,$(cd $GSEEKER_TMPDIR/$1/$2 ; git log --max-count=1 --pretty=short | grep 'commit ' | sed 's/commit //g')" >> $FILE + echo "size,pack,$(cd $GSEEKER_TMPDIR/$1/$2 ; git count-objects -vH | grep "size-pack" | sed 's/size-pack: //g')" >> $FILE - for BRANCH in $(cd $GSEEKER_TMPDIR/$1/$2 ; git info | grep ' origin/' | grep -v 'HEAD' | sed 's/origin\///g'); do + for BRANCH in $(cd $GSEEKER_TMPDIR/$1/$2 ; git branch -r | grep ' origin/' | grep -v 'HEAD' | sed 's/origin\///g'); do echo "branch,$BRANCH" >> $FILE done @@ -204,55 +205,36 @@ rep_stats() { EMAIL=$(echo $LINE | cut -f2 -d'<' | sed 's/>//g') echo "shortlog,$EMAIL,$NAME,$COMMITS" >> $FILE done - + $(cat $GSEEKER_TRACKER | grep "commit,number," | grep ",$2,$1" | cut -f3 -d, > $GSEEKER_TMPDIR/tracker_$2_$1) $(cd $GSEEKER_TMPDIR/$1/$2 ; git log --oneline | nl | sort -rn | cut -f2 | cut -d" " -f1 > $GSEEKER_TMPDIR/cn_$2_$1) for CNUMBER in $(grep -Fvf $GSEEKER_TMPDIR/tracker_$2_$1 $GSEEKER_TMPDIR/cn_$2_$1); do $(cd $GSEEKER_TMPDIR/$1/$2 ; git checkout $CNUMBER) echo "commit,number,$CNUMBER" >> $FILE - F_PEM=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.pem") - - if [[ -n $F_PEM ]]; then - for TF in $F_PEM; do - HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) - - if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then - echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE - fi - done - fi - - F_ZIP=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.zip") - - if [[ -n $F_ZIP ]]; then - for TF in $F_ZIP; do - HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) - - if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then - echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE - fi - done - fi - - F_PUB=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name "*.pub") - - if [[ -n $F_PUB ]]; then - for TF in $F_PUB; do - HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) - - if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then - echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE - fi - done - fi - + scan_file_alert $1 $2 echo "commit,number,$CNUMBER,$2,$1" >> $GSEEKER_TRACKER done cp $FILE "$GSEEKER_REPORTS/report-$DATE-$2-$1.gseeker" } +scan_file_alert() { + for FTYPE in "*.pem" "*.zip" "*.pub"; do + FLIST=$(cd $GSEEKER_TMPDIR/$1/$2 ; find . -type f -name $FTYPE) + + if [[ -n $FLIST ]]; then + for TF in $FLIST; do + HASH=$(cd $GSEEKER_TMPDIR/$1/$2 ; sha1 -q $TF) + + if [[ -z $(cat $FILE | grep "file,alert,$HASH,") ]]; then + echo "file,alert,$HASH,$CNUMBER,$TF" >> $FILE + fi + done + fi + done +} + setup() { test -d $GSEEKER_HOME || (mkdir -p $GSEEKER_HOME) test -d $GSEEKER_REPORTS || (mkdir -p $GSEEKER_REPORTS) diff --git a/makefile b/makefile new file mode 100644 index 0000000..0319fbe --- /dev/null +++ b/makefile @@ -0,0 +1,10 @@ +.PHONY: install uninstall +.MAIN: install + +install: + mkdir -p ~/bin + cp -v gseeker ~/bin + chmod +x ~/bin/gseeker + +uninstall: + rm -vf ~/bin/gseeker From c19c75eb3420444860fce65c8a91951a4a8c8b4d Mon Sep 17 00:00:00 2001 From: Umgeher Torgersen Date: Wed, 3 May 2023 16:31:12 +0000 Subject: [PATCH 4/4] version: 0.3 // cmd_tree*() help functions patch Squashed commit of the following: commit 21a8e24a983eeefd18ba0453e29e7961ac326585 Author: Umgeher Torgersen Date: Wed May 3 16:30:33 2023 +0000 version: 0.3 commit f8496531bbe7f9970a16c334cf15f9a9569b46d9 Author: Umgeher Torgersen Date: Wed May 3 16:25:21 2023 +0000 some missing information (README file) and 'echo ""' removed commit 58062dc31da69f8476b1116b46d689b2c9d79375 Author: Theron Georgopoulos Date: Wed May 3 12:41:25 2023 -0300 Added cmd_tree*() help functions README and cmd_tree_help*() functions created. Please look over my writing and tell me what you think. I followed the example and left the "heavy duty explanations" to the README file --- gseeker | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 162 insertions(+), 7 deletions(-) diff --git a/gseeker b/gseeker index 4d14650..98e83b5 100755 --- a/gseeker +++ b/gseeker @@ -2,7 +2,7 @@ ### DEFINE -VERSION="0.2" +VERSION="0.3" GSEEKER_HOME="$HOME/.gseeker" GSEEKER_REPORTS="$GSEEKER_HOME/reports" GSEEKER_TMPDIR="$GSEEKER_HOME/tmp/pid_$$" @@ -27,6 +27,9 @@ cmd_tree() { show ) cmd_tree_show $* ;; + help ) + cmd_tree_help $* + ;; * ) echo "usage: $0 []" echo "" @@ -34,12 +37,163 @@ cmd_tree() { echo "" echo " config add and delete settings" echo " show show metadata" + echo " run run diagnostics on chosen URL's or groups added through " echo "" echo "See '$0 help ' to read about a specific subcommand." ;; esac } +cmd_tree_help() { + case $2 in + config ) + cmd_tree_help_config $* + ;; + show ) + cmd_tree_help_show $* + ;; + run ) + cmd_tree_help_run $* + ;; + * ) + echo "usage: $0 help " + echo "" + echo " config show help for the config command" + echo " show show help for the show command" + echo " run show help for the run command" + echo "" + ;; + esac +} + +cmd_tree_help_config() { + case $3 in + group ) + cmd_tree_help_config_group $* + ;; + url ) + cmd_tree_help_config_url $* + ;; + * ) + echo "usage: $0 help config [group, url]" + ;; + esac +} + +cmd_tree_help_config_group() { + case $4 in + add ) + echo "usage: $0 config group add " + echo "" + echo "Examples" + echo "" + echo " $0 config group add testingGroup" + echo " $0 config group add anotherGroup" + ;; + del ) + echo "usage: $0 config group del " + echo "" + echo "Examples:" + echo "" + echo " $0 config group del testingGroup" + echo " $0 config group del anotherGroup" + ;; + * ) + echo "usage: $0 help config group [add, del]" + ;; + esac +} + +cmd_tree_help_config_url() { + case $4 in + add ) + echo "usage: $0 config url add " + echo "" + echo "Examples:" + echo "" + echo '$0 config url add "https://git.sr.ht/~umgeher/gseeker" gseekerGroup' + echo '$0 config url add "https://git.sr.ht/~someperson/someproject" someGroup' + ;; + del ) + echo "usage: $0 config url del " + echo "" + echo "Examples:" + echo "" + echo '$0 config url del 05e8314dd1e2552e7d124048fba8f275d4ad0f60 gseekerGroup' + echo '$0 config url del cbbb2a6efd6217a48fd16b5c9430f2876bab222a someGroup' + echo "" + echo " are the sha1 hashes of the URL's" + ;; + * ) + echo "usage: $0 help config url [add, del]" + ;; + esac +} + +cmd_tree_help_show() { + case $3 in + config ) + echo "prints all URL's and groups added to the config file through the" + echo '"config [group, url] add " command to standard output' + echo "" + echo "Example:" + echo "" + echo "$0 show config" + ;; + * ) + echo "usage: $0 help show config" + ;; + esac +} + +cmd_tree_help_run() { + case $3 in + null ) + echo 'where "null" stands for no following :' + echo "" + echo "runs diagnostics on all URL's found within any group in the config" + echo "file" + echo "" + echo "Example:" + echo "" + echo "$0 run" + ;; + group ) + cmd_tree_help_run_group $* + ;; + * ) + echo "usage: $0 help run [null, group]" + ;; + esac +} + +cmd_tree_help_run_group() { + case $4 in + null ) + echo 'where "null" stands for no following :' + echo "" + echo "runs diagnostics on all URL's found within the specified group in the" + echo "config file" + echo "" + echo "Example:" + echo "" + echo "$0 run gseekerGroup" + echo "$0 run someGroup" + ;; + url ) + echo "runs diagnostics on the specified URL found in the specified group" + echo "" + echo "Example:" + echo "" + echo '$0 run gseekerGroup "https://git.sr.ht/~umgeher/gseeker"' + echo '$0 run someGroup "https://git.sr.ht/~someperson/someproject"' + ;; + * ) + echo "usage: $0 help run group [null, url]" + ;; + esac +} + cmd_tree_config() { case $2 in group ) @@ -51,8 +205,8 @@ cmd_tree_config() { * ) echo "usage: $0 config []" echo "" - echo " group " - echo " url " + echo " group add or delete a group from the config file" + echo " url add or delete a URL from the config file" echo "" echo "See '$0 help config ' to read about a specific subcommand." ;; @@ -70,8 +224,8 @@ cmd_tree_config_group() { * ) echo "usage: $0 config group []" echo "" - echo " add " - echo " del " + echo " add add a group to the config file" + echo " del delete a group from the config file" echo "" echo "See '$0 help config group ' to read about a specific subcommand." ;; @@ -106,7 +260,8 @@ cmd_tree_config_url() { * ) echo "usage: $0 config url []" echo "" - echo "..." + echo " add add a URL to the config file" + echo " del delete a URL from the config file" echo "" echo "See '$0 help config url ' to read about a specific subcommand." ;; @@ -161,7 +316,7 @@ cmd_tree_show() { * ) echo "usage: $0 show " echo "" - echo " config -- show configurations" + echo "See '$0 help show ' to read about a specific subcommand." ;; esac }