#! /bin/bash -
#
# mvln: move a sym-link pointer from one target to another
#
# H.A.Trujillo
# 1 Aug 14
#
# Last Change:      6 Dec 2019

IFS='
'

if [ "$1" == "-h" ] ; then
    prg=$(basename $0)
    cat <<- EOT

   ${prg}:
        Change the target of a sym-link.

        Example:  $prg mylink v2 v3
            changes  mylink -> ../whizbang_v2.baz
            to       mylink -> ../whizbang_v3.baz
	EOT
    exit
fi

if [ $# != 3 ] ; then
    echo "    mvln: need three arguments!"
    exit
fi

pointer=${1%/}		# trim trailing slash if directory
if [ ! -L $pointer ] ; then
    echo "    $pointer is not a symlink.  Aborting."
    exit 1
fi
old_target=`ls -l $pointer | cut -f2 -d\> | sed 's/ //'`
new_target=${old_target/$2/$3}


mv $pointer ${pointer}_jic
if ln -s $new_target $pointer
    then
	unlink ${pointer}_jic
	ls -l $pointer
    else
	mv ${pointer}_jic $pointer
	echo "ln -s $new_target $pointer  failed -- aborting"
    fi

exit

#  3jun19	Removed trailing-slash glitch for directories
#		Added sym-link check for $pointer
#  8nov19	sanity check: 3 arguments?
