54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # Create a symlink tree.
 | |
| #
 | |
| # Syntax: symlink-tree srcdir "ignore1 ignore2 ..."
 | |
| #
 | |
| # where srcdir is the directory to create a symlink tree to,
 | |
| # and "ignoreN" is a list of files/directories to ignore.
 | |
| 
 | |
| prog=$0
 | |
| srcdir=$1
 | |
| ignore="$2"
 | |
| 
 | |
| if test $# -lt 1; then
 | |
|   echo "symlink-tree error:  Usage: symlink-tree srcdir \"ignore1 ignore2 ...\""
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| ignore_additional=". .. CVS"
 | |
| 
 | |
| # If we were invoked with a relative path name, adjust ${prog} to work
 | |
| # in subdirs.
 | |
| case ${prog} in
 | |
| /*) ;;
 | |
| *) prog=../${prog} ;;
 | |
| esac
 | |
| 
 | |
| # Set newsrcdir to something subdirectories can use.
 | |
| case ${srcdir} in
 | |
| /*) newsrcdir=${srcdir} ;;
 | |
| *) newsrcdir=../${srcdir} ;;
 | |
| esac
 | |
| 
 | |
| for f in `ls -a ${srcdir}`; do
 | |
|   if [ -d ${srcdir}/$f ]; then
 | |
|     found=
 | |
|     for i in ${ignore} ${ignore_additional}; do
 | |
|       if [ "$f" = "$i" ]; then
 | |
| 	found=yes
 | |
|       fi
 | |
|     done
 | |
|     if [ -z "${found}" ]; then
 | |
|       echo "$f		..working in"
 | |
|       if [ -d $f ]; then true; else mkdir $f; fi
 | |
|       (cd $f; ${prog} ${newsrcdir}/$f "${ignore}")
 | |
|     fi
 | |
|   else
 | |
|     echo "$f		..linked"
 | |
|     rm -f $f
 | |
|     ln -s ${srcdir}/$f .
 | |
|   fi
 | |
| done
 | |
| 
 | |
| exit 0
 |