#!/bin/bash

FROMDIR="../$1"
TODIR=${2:-$(pwd)}
TODIR=${TODIR%/}

OrigLDIRLINK=".dirlink"
DIRLINK="$TODIR/$OrigLDIRLINK"

if [ -z $1 ]; then
	echo "Usage: $0 FROM TO"
	exit 0;
fi

# Create the TODIR
[ -d "$TODIR" ] || mkdir -p "$TODIR"

# Create the dirlink
ln -sf "$FROMDIR" "$DIRLINK"

# Copy Directory Structure
find "$DIRLINK/" -print0 |
	while IFS= read -d "" oname; 
	do
		case "$oname" in
			*.git*) continue;;
			*.pdf )	continue;;
			*.png ) continue;;
			*.midi ) continue;;
		esac

		name="${oname/$DIRLINK\/}"
		lname="${oname/$TODIR\/}"
		
		# Create directory
		if [ -d "$oname" ]; then
			mkdir -p "$TODIR/$name"
			continue;
		fi

		# Create softlink
		if [ -f "$oname" ]; then
			fname="${name##*/}"
			dname="${name%/*}"
			ndots="$(echo $name | awk -F"/" 'NF > max {max = NF} END {print max-1}')"
			dots=$(printf '%*s' $ndots | sed 's; ;../;g')

			to=$dots$OrigLDIRLINK/$name
			from=$TODIR/$name
			ln -s "$to" "$from" 2> /dev/null
			continue;
		fi
	done

echo "#!/bin/bash" > $TODIR/update_shadow_dir
echo "./.dirlink/shadowdir ./.dirlink/ ." >> $TODIR/update_shadow_dir
chmod +x $TODIR/update_shadow_dir