shithub: git9

Download patch

ref: a08453bf28d8178919b62d01b73e56c209f5b4d1
parent: 5d65bc0372824b98d8f909d8de3e5ee2c4c08668
author: kvik <kvik@a-b.xyz>
date: Thu Nov 14 22:04:31 EST 2019

Instead of each script defining their own ad-hoc usage function we
define a generic handler in /bin/git/common.rc and have each script
fill the $usage variable with a message that will get displayed on
standard error output before exiting the program.

This patch also makes an initial and weak attempt at cleaning up the
usage messages to match the current implementation.  Rest of the work,
along with cleaning up the unused code paths will be done after
further basic cleanups.

Move usage handling to common.rc; update all scripts.

--- a/add
+++ b/add
@@ -1,11 +1,11 @@
 #!/bin/rc -e
 rfork ne
+. /bin/git/common.rc
 
-fn usage {
-	echo usage: $0 '[-r] file ...
-	-r:	remove instead of adding' >[1=2]
-	exit usage
-}
+usage='
+	git/add [-r] file ...
+		-r        remove file
+'
 
 add='tracked'
 del='removed'
--- a/branch
+++ b/branch
@@ -1,15 +1,13 @@
 #!/bin/rc -e
-
 rfork en
+. /bin/git/common.rc
 
-fn usage{
-	echo usage: $0 '[-b base] [-o origin] new
-	-b base:	use "base" for branch (default: current branch)
-	-o origin:	use "origin" for remote branch
-	-u:		update branch if it exists
-	new:	name of new branch' >[1=2]
-	exit usage
-}
+usage='
+	git/branch [-cdsu] [-b base] [new]
+		-b base   base new branch on "base" (default: current branch)
+		-d        delete a branch
+		-s        create a branch but stay on current one
+'
 
 if(! cd `{git/conf -r}){
 	exit 'not in git repository'
--- a/clone
+++ b/clone
@@ -1,6 +1,11 @@
 #!/bin/rc -e
-
 rfork en
+. /bin/git/common.rc
+
+usage='
+	git/clone remote [local]
+'
+
 nl='
 '
 
@@ -7,10 +12,8 @@
 remote=$1
 local=$2
 
-if(~ $#remote 0){
-	echo usage: $0 'remote [local]' >[1=2]
-	exit usage
-}
+if(~ $#remote 0)
+	usage
 if(~ $#local 0)
 	local=`{basename $remote .git}
 
--- a/commit
+++ b/commit
@@ -1,6 +1,10 @@
 #!/bin/rc
-
 rfork ne
+. /bin/git/common.rc
+
+usage='
+	git/commit
+'
 
 nl='
 '
--- /dev/null
+++ b/common.rc
@@ -1,0 +1,4 @@
+fn usage{
+	>[2=1] echo -n 'usage:' $usage
+	exit 'usage'
+}
--- a/diff
+++ b/diff
@@ -1,11 +1,11 @@
 #!/bin/rc
-
 rfork ne
+. /bin/git/common.rc
 
-fn usage{
-	echo usage: $0 '[-b branch] [file ...]' >[1=2]
-	exit usage
-}
+usage='
+	git/diff [-b branch] [file ...]
+		-b        diff relative to branch "branch" 
+'
 
 if(! cd `{git/conf -r}){
 	echo 'not a git repository' >[1=2]
--- a/export
+++ b/export
@@ -1,6 +1,10 @@
 #!/bin/rc
-
 rfork ne
+. /bin/git/common.rc
+
+usage='
+	git/export [query]
+'
 
 nl='
 '
--- a/import
+++ b/import
@@ -1,6 +1,10 @@
 #!/bin/rc
-
 rfork ne
+. /bin/git/common.rc
+
+usage='
+	git/import [file ...]
+'
 
 nl='
 '
--- a/init
+++ b/init
@@ -1,12 +1,12 @@
 #!/bin/rc
+rfork ne
+. /bin/git/common.rc
 
-rfork e
-
-fn usage{
-	echo $0 '[-b] [-u upstream] name
-	-b:	init bare repository' >[1=2]
-	exit usage
-}
+usage='
+	git/init [-b] [-u upstream] name
+		-b        init bare repository
+		-u        set remote "origin" to upstream
+'
 
 sub='/.git'
 upstream=()
--- a/log
+++ b/log
@@ -1,15 +1,13 @@
 #!/bin/rc -e
-
 rfork en
+. /bin/git/common.rc
 
-nl='
+usage='
+	git/log [-q query] [file ...]
 '
 
-fn usage {
-	echo usage: $0 '[-b branch] [file ...]' >[1=2]
-	exit usage
-}
-
+nl='
+'
 
 base=/mnt/git/object/
 git/fs
--- a/merge
+++ b/merge
@@ -1,7 +1,11 @@
 #!/bin/rc -e
-
 rfork ne
+. /bin/git/common.rc
 
+usage='
+	git/merge theirs
+'
+
 fn merge{
 	ourbr=$1/tree
 	basebr=$2/tree
@@ -19,11 +23,6 @@
 		if(! ape/diff3 -m $ourbr/$f $basebr/$f $theirbr/$f > $f)
 			echo merge needed: $f
 	}
-}
-
-fn usage{
-	echo usage: $0 theirs >[1=2]
-	exit usage
 }
 
 if(! ~ $#* 1)
--- a/mkfile
+++ b/mkfile
@@ -15,6 +15,7 @@
 	branch\
 	clone\
 	commit\
+	common.rc\
 	diff\
 	export\
 	import\
--- a/pull
+++ b/pull
@@ -1,7 +1,15 @@
 #!/bin/rc -e
-
 rfork en
+. /bin/git/common.rc
 
+usage='
+	git/pull [-u upstream] [-b branch]
+		-b       work with branch "branch"
+		-f       fetch updates without checking out
+		-i       display incoming commits
+		-u       pull from "upstream" (default "origin")
+'
+
 nl='
 '
 
@@ -31,14 +39,6 @@
 	}
 	'
 }
-
-fn usage{
-	echo usage: $0 '[-a] [-u upstream] [-b branch]
-	-u up:	pull from upstream "up" (default: origin)
-	-f:	fetch without updating working copy' >[1=2]
-	exit usage
-}
-
 
 if(! cd `{git/conf -r}){
 	echo 'not in git repository' >[1=2]
--- a/push
+++ b/push
@@ -1,7 +1,15 @@
 #!/bin/rc
-
 rfork en
+. /bin/git/common.rc
 
+usage='
+	git/push [-a] [-u upstream] [-b branch] [-r branch]
+		-a       push all branches
+		-b       push branch "branch" (default: current branch)
+		-r       delete branch "branch" from upstream
+		-u       push to remote "upstream" (default: origin)
+'
+
 nl='
 '
 
@@ -9,13 +17,6 @@
 	exit 'not in git repository'
 
 git/fs
-fn usage {
-	echo usage: $0 '[-a] [-u upstream] [-b branch] [-r rmbranch]
-	-a:		push all
-	-u upstream:	push to repo "upstream" (default: origin)
-	-b branch:	push branch "branch" (default: current branch)' >[1=2]
-	exit usage
-}
 
 remote=()
 sendall=''
--- a/revert
+++ b/revert
@@ -1,5 +1,12 @@
 #!/bin/rc
+rfork e
+. /bin/git/common.rc
 
+usage='
+	git/revert [-c query] file [...]
+		-c        revert to commit "query" (default: HEAD)
+'
+
 commit=/mnt/git/HEAD
 nl='
 '
@@ -10,8 +17,7 @@
 		commit=`{git/query -p $2};
 		shift
 	case *;
-		echo usage: $0 [-c commit] files...
-		exit usage
+		usage
 	}
 	shift
 }