#!/usr/bin/env zsh local svdir=${SVDIR:-/service} if [[ -z $1 || -z $2 ]]; then echo "Usage: $0 source target" return 64 fi if [[ ! -h $svdir/$1 ]]; then echo $svdir/$1 does not exist return 2 fi if [[ -e $svdir/$2 ]]; then echo $svdir/$2 already exists return 3 fi local servicedir=`getservicedir` if [[ ! ( -w $svdir && -w $servicedir ) ]]; then echo $svdir or $servicedir is not writeable fi # The service doesn't have to be stopped as removing the link will do that # However, running the same service twice isn't a great idea, so wait here sv stop $1 rm -f $svdir/$1 || return mv $servicedir/{$1,$2} || return ln -s {$servicedir,$svdir}/$2 || return sv start $2 return