summary refs log tree commit diff stats
path: root/zsh/functions/runit/renamesv
diff options
context:
space:
mode:
Diffstat (limited to 'zsh/functions/runit/renamesv')
-rw-r--r--zsh/functions/runit/renamesv36
1 files changed, 36 insertions, 0 deletions
diff --git a/zsh/functions/runit/renamesv b/zsh/functions/runit/renamesv
new file mode 100644
index 00000000..dba1098d
--- /dev/null
+++ b/zsh/functions/runit/renamesv
@@ -0,0 +1,36 @@
+#!/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