72578f380982a62d7f005627c06f88e213505a6b
[charm.git] / src / scripts / gathertree
1 #!/bin/sh
2 if [ "x$SYSTEMLN" = "x" ]; then SYSTEMLN="./system_ln"; fi
3
4 SRC=$1
5 DST=$2
6
7 [ ! -d $SRC ] && exit 0;
8
9 # remove all temporary files
10 rm -f temp.d temp.f temp.m temp.l tmp*.awk
11 # find all directories including and below SRC
12 (cd $SRC ; find . -name CVS -prune -o -type d -print )|sed -e s@.@@> temp.d
13 # find all files below SRC
14 (cd $SRC ; find . -name CVS -prune -o -type f -print )|sed -e s@.@@> temp.f
15 # generate shell script to make directories if they do not exist
16 awk '{print "if [ ! -d '$DST'"$1" ] ; then mkdir '$DST'"$1" ; fi";}' <temp.d >temp.m
17 # generate shell script to symlink files
18 # Count the number of directories up we have to go; print out list
19 echo '{ nUp=0; for (i=1;i<NF;i++)
20                 if ($i=="..") nUp--;
21                 else if ($i!=".")nUp++;
22         pah=""; for (i=0;i<nUp;i++) {pah=pah"../"}; print pah
23 } ' > tmp1.awk
24 echo '{print "pah=`echo '$DST'"$1" | awk -F/ -f tmp1.awk`" ;' > tmp2.awk
25 echo ' print "'$SYSTEMLN' $pah'$SRC'"$1" '$DST'"$1 }' >> tmp2.awk
26 awk -f tmp2.awk <temp.f >temp.l
27 # execute shell script to create directories
28 sh temp.m
29 # execute shell script to link files 
30 sh temp.l
31 [ -f $SRC/gather.tree ] && sh $SRC/gather.tree
32 # remove temporary files
33 rm -f temp.d temp.f temp.m temp.l tmp*.awk