chiark / gitweb /
tests: gitrepo-edit: seems to work
[dgit.git] / tests / gitrepo-edit
index 97bbd2c438c71002234a9ab24f04991e04f382b5..65a2265e5f78ae234972656c52222947758b82a4 100755 (executable)
@@ -2,18 +2,15 @@
 set -e
 fail () { echo >&2 "$0: $*"; exit 1; }
 
-case "$1" in
-edit|done) mode=$1
-fi
-
-case "$*.$1" in
-1.-*)  fail "no options understood"            ;;
-1.*)   arg="$1"; shift                         ;;
-*)     fail "need one arg"                     ;;
+case "$#.$1" in
+2.edit|2.done) mode="$1"; arg="$2" ;;
+2.-*)          fail "no options understood"                    ;;
+*)             fail "usage: gitrepo-edit edit|done DIRECTORY"  ;;
 esac
 
 case "$arg" in
 *.git.tar)     base=${arg%.tar}                        ;;
+*.git.edit)    base=${arg%.edit}                       ;;
 *.git)         base=${arg}                             ;;
 *)             fail "arg must end in .git[.tar]"       ;;
 esac
@@ -36,9 +33,8 @@ tryat_edit () {
        if test -f "$b.tar"; then
                mkdir "$b.tmp"
                (set -e; cd "$b.tmp"; tar xf "$b.tar")
-               mv "$b.tmp/$b" "$b.edit"
+               mv "$b.tmp" "$b.edit"
                rm "$b.tar"
-               rm -rf "$b.tmp"
                echo "$b.edit ready"
                exit 0
        fi
@@ -47,11 +43,8 @@ tryat_edit () {
 tryat_done () {
        local b="$1"
        if test -d "$b.edit"; then
-               mkdir "$b.tmp"
-               cp -al "$b.edit" "$b.tmp/$b"
-               (set -e; cd "$b.tmp"; tar cf "$b.tmp/tar")
-               mv "$b.tmp/tar" "$b.tar"
-               rm -rf "$b.tmp"
+               (set -e; cd "$b.edit"; tar cf "$b.tmp" *)
+               mv "$b.tmp" "$b.tar"
                mv "$b.edit" "$b.tmp"
                rm -rf "$b.tmp"
                echo "$b.tar regenerated"
@@ -65,7 +58,7 @@ tryat_done () {
 
 tryat () {
        local b="$1"
-       if ! test -f "$b.tar" && ! test -f "$b.edit"; then
+       if ! test -f "$b.tar" && ! test -d "$b.edit"; then
                return
        fi
        tryat_pre "$b"
@@ -81,5 +74,6 @@ case "$arg" in
                tryat "$pwd/$base"
                tryat "$pwd/git-srcs/$base"
                tryat "$pwd/tests/git-srcs/$base"
+               fail "could not find $base..."
                ;;
 esac