minimal/do: given a directory name, build dirname/all

Like redo does.
This commit is contained in:
Avery Pennarun 2010-11-16 03:11:28 -08:00
commit ac36dcf136

View file

@ -20,15 +20,15 @@ fi
_do() _do()
{ {
TARGET="$1" TARGET="$1"
DOFILE="$1.do" DOFILE="$TARGET.do"
if [ ! -e "$TARGET" ]; then if [ ! -e "$TARGET" ]; then
printf '\033[32mdo \033[1m%s\033[m\n' "$PWD/$TARGET" >&2 printf '\033[32mdo \033[1m%s\033[m\n' "$PWD/$TARGET" >&2
echo "$PWD/$TARGET" >>"$DO_BUILT" echo "$PWD/$TARGET" >>"$DO_BUILT"
set "$TARGET" FIXME "$TARGET.tmp" set "$TARGET" "" "$TARGET.tmp"
( . "$PWD/$DOFILE" >"$TARGET.tmp" ) && ( . "$PWD/$DOFILE" >"$TARGET.tmp" ) &&
mv "$TARGET.tmp" "$TARGET" mv "$TARGET.tmp" "$TARGET"
else else
echo "$1 exists." >&2 echo "$TARGET exists." >&2
fi fi
} }
@ -36,6 +36,9 @@ _do()
redo() redo()
{ {
for i in "$@"; do for i in "$@"; do
if [ -e "$i/." ]; then
i="$i/all"
fi
D="$(dirname "$i")" D="$(dirname "$i")"
B="$(basename "$i")" B="$(basename "$i")"
( cd "$D" && _do "$B" ) ( cd "$D" && _do "$B" )