This makes it a hell of a lot simpler but will lose support for BSD make. All effected machines are running gnu-make, so the cost benefit ratio ways heavily in favor of doing this.
		
			
				
	
	
		
			34 lines
		
	
	
		
			722 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			722 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#! env zsh
 | 
						|
# -*- sh -*-
 | 
						|
 | 
						|
REPORT="`dirname $0`/report"
 | 
						|
 | 
						|
if [ -z "$1" ] || [ -z "$2" ] ; then
 | 
						|
  "$REPORT" error "ERROR: Both to and from string must be defined.\n     source: $1 \n     symlnk: $2"
 | 
						|
  exit -1
 | 
						|
fi
 | 
						|
 | 
						|
if [[ -h $2 ]] ; then
 | 
						|
 link_location=$(readlink $2)
 | 
						|
  if [[ "$1" == "$link_location" ]] ; then
 | 
						|
    "$REPORT" pass "Symlink already installed $1"
 | 
						|
    exit 0
 | 
						|
  else
 | 
						|
    "$REPORT" warn "Symlink already exist, buut doesn't point to the src"
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
if [[ -e $2 ]] ; then
 | 
						|
  "$REPORT" warn "Something already exists at $2."
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
parent=$(dirname "$2")
 | 
						|
if [[ ! -e $parent ]] ; then
 | 
						|
  "$REPORT" warn "$parent doesn't exist. Creating."
 | 
						|
  mkdir -p $parent
 | 
						|
fi
 | 
						|
 | 
						|
"$REPORT" pass "Symlinked `ln -svf $1 $2`"
 |