From 62c2e5bde449901e1963adb288b4c31b46db3776 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 12 Feb 2014 18:35:44 +0000 Subject: tests: git-repo-edit: wip --- tests/gitrepo-edit | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 tests/gitrepo-edit (limited to 'tests/gitrepo-edit') diff --git a/tests/gitrepo-edit b/tests/gitrepo-edit new file mode 100755 index 0000000..97bbd2c --- /dev/null +++ b/tests/gitrepo-edit @@ -0,0 +1,85 @@ +#!/bin/sh +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" ;; +esac + +case "$arg" in +*.git.tar) base=${arg%.tar} ;; +*.git) base=${arg} ;; +*) fail "arg must end in .git[.tar]" ;; +esac + +tryat_pre () { + local b="$1" + rm -rf "$b.tmp" + if test -f "$b.tar" && test -f "$b.edit"; then + echo "$b.edit exists, deleting possibly-obsolete $b.tar" + rm "$b.tar" + fi +} + +tryat_edit () { + local b="$1" + if test -d "$b.edit"; then + echo "$b.edit already exists" + exit 0 + fi + if test -f "$b.tar"; then + mkdir "$b.tmp" + (set -e; cd "$b.tmp"; tar xf "$b.tar") + mv "$b.tmp/$b" "$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" + mv "$b.edit" "$b.tmp" + rm -rf "$b.tmp" + echo "$b.tar regenerated" + exit 0 + fi + if test -f "$b.tar"; then + echo "$b.tar already exists and $b.edit doesn't" + exit 0 + fi +} + +tryat () { + local b="$1" + if ! test -f "$b.tar" && ! test -f "$b.edit"; then + return + fi + tryat_pre "$b" + tryat_$mode "$b" + fail "unexpected situation in $b.*" +} + +case "$arg" in +/*) tryat "$base" + ;; +*) + pwd=`pwd` + tryat "$pwd/$base" + tryat "$pwd/git-srcs/$base" + tryat "$pwd/tests/git-srcs/$base" + ;; +esac -- cgit v1.2.3