Hi, apologies if this has been asked before. I searched but didn't find 
anything.

I have a rule that I want to apply to everything in a directory, and again 
in all subdirectories (possibly again, recursively, in all subdirectories 
of that), with the output destination mirroring this.

For example, my first attempt might look like this:

: foreach src/*.input         |> dothing %f %o |> dest/%B.output
: foreach src/foo/*.input     |> dothing %f %o |> dest/foo/%B.output
: foreach src/foo/bar/*.input |> dothing %f %o |> dest/foo/bar/%B.output
: foreach src/bar/*.input     |> dothing %f %o |> dest/bar/%B.output

The commands "run ./script args" and "preload directory" described in the 
manual let me do this with a separate shell script.

Here's what I came up with:

*Tupfile:*
preload src/pages
run ./mkpage.inc.sh

*mkpage.inc.sh*
#! /bin/sh -e

cmd ()
{
    echo ": foreach src/$1*.input |> dothing %f %o |> dest/$1%B.output"
}

cd "src"
dirs="."/*

cmd

for entry in $dirs
do
    if [ -d "$entry" ];then
        cmd $entry
    fi
done
cd "../"


This works for me (with a bit of work I could make it recursive).

I hope someone else might find it useful.

But I was also wondering if there was a better way to do this natively with 
tup?

Thanks

Ben


-- 
-- 
tup-users mailing list
email: [email protected]
unsubscribe: [email protected]
options: http://groups.google.com/group/tup-users?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"tup-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to