symlink-tree revision 77298
1#!/bin/sh
2# Create a symlink tree.
3#
4# Syntax: symlink-tree srcdir "ignore1 ignore2 ..."
5#
6# where srcdir is the directory to create a symlink tree to,
7# and "ignoreN" is a list of files/directories to ignore.
8
9prog=$0
10srcdir=$1
11ignore="$2"
12
13if test $# -lt 1; then
14  echo "symlink-tree error:  Usage: symlink-tree srcdir \"ignore1 ignore2 ...\""
15  exit 1
16fi
17
18ignore_additional=". .. CVS"
19
20# If we were invoked with a relative path name, adjust ${prog} to work
21# in subdirs.
22case ${prog} in
23/*) ;;
24*) prog=../${prog} ;;
25esac
26
27# Set newsrcdir to something subdirectories can use.
28case ${srcdir} in
29/*) newsrcdir=${srcdir} ;;
30*) newsrcdir=../${srcdir} ;;
31esac
32
33for f in `ls -a ${srcdir}`; do
34  if [ -d ${srcdir}/$f ]; then
35    found=
36    for i in ${ignore} ${ignore_additional}; do
37      if [ "$f" = "$i" ]; then
38	found=yes
39      fi
40    done
41    if [ -z "${found}" ]; then
42      echo "$f		..working in"
43      if [ -d $f ]; then true; else mkdir $f; fi
44      (cd $f; ${prog} ${newsrcdir}/$f "${ignore}")
45    fi
46  else
47    echo "$f		..linked"
48    rm -f $f
49    ln -s ${srcdir}/$f .
50  fi
51done
52
53exit 0
54