summaryrefslogtreecommitdiff
path: root/docker/assets/initctl
diff options
context:
space:
mode:
Diffstat (limited to 'docker/assets/initctl')
-rwxr-xr-xdocker/assets/initctl67
1 files changed, 67 insertions, 0 deletions
diff --git a/docker/assets/initctl b/docker/assets/initctl
new file mode 100755
index 00000000000..944741ee66c
--- /dev/null
+++ b/docker/assets/initctl
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+# Monkey patch missing initctl in docker environment
+
+fail() {
+ echo "$@" 1>&2
+ exit 1
+}
+
+verify_args() {
+ if [[ "$2" != "gitlab-runsvdir" ]]; then
+ fail "initctl: Unknown job: $2"
+ fi
+ if [[ $# -ne 2 ]]; then
+ fail "usage: $0 command gitlab-runsvdir"
+ fi
+}
+
+proxy_gitlab_ctl() {
+ gitlab-ctl "$COMMAND"
+}
+
+COMMAND="$1"
+shift
+SERVICE="$1"
+
+case "$COMMAND" in
+ start)
+ verify_args "$COMMAND" "$@"
+ RUNSVDIR=$(pidof runsvdir)
+ if [[ -z "$RUNSVDIR" ]]; then
+ /opt/gitlab/embedded/bin/runsvdir-start &
+ fi
+ ;;
+
+ stop|restart)
+ verify_args "$COMMAND" "$@"
+ proxy_gitlab_ctl "$COMMAND" "$@"
+ ;;
+
+ status)
+ verify_args "$COMMAND" "$@"
+ if [[ ! -f /etc/init/$SERVICE.conf ]]; then
+ fail "initctl: Unknown job: $SERVICE"
+ fi
+
+ RUNSVDIR=$(pidof runsvdir)
+ if [[ -n "$RUNSVDIR" ]]; then
+ echo "$SERVICE start/running, process $RUNSVDIR"
+ else
+ echo "$SERVICE stop/waiting"
+ fi
+ ;;
+
+ reload)
+ verify_args "$COMMAND" "$@"
+ proxy_gitlab_ctl "hup" "$@"
+ ;;
+
+ list)
+ echo "gitlab-runsvdir"
+ ;;
+
+ *)
+ exit 0
+ ;;
+esac