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
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
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"
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"
tryat "$pwd/$base"
tryat "$pwd/git-srcs/$base"
tryat "$pwd/tests/git-srcs/$base"
+ fail "could not find $base..."
;;
esac