#!/sbin/openrc-run

name="Gitaly"
description="A Git RPC service for handling all the git calls made by GitLab"

: ${gitaly_config:="/etc/gitlab/gitaly.toml"}
: ${gitaly_logfile:="/var/log/gitlab/gitaly.log"}

command="/usr/bin/gitaly"
command_args="$gitaly_config"
command_background="yes"
command_user="git"

output_log="$gitaly_logfile"
error_log="$gitaly_logfile"
pidfile="/run/gitaly.pid"
supervise_daemon_args="--env TZ=:/etc/localtime"
start_stop_daemon_args="$supervise_daemon_args"

rc_ulimit="-n 15000"

required_files="$gitaly_config"

depend() {
	use net
}

start_pre() {
	local socket_path=$(sed -En "s/^\s*socket_path\s*=\s*[\"']([^\"']+)[\"']/\1/p" "$gitaly_config")
	local runtime_dir=$(sed -En "s/^\s*runtime_dir\s*=\s*[\"']([^\"']+)[\"']/\1/p" "$gitaly_config")

	if [ "$socket_path" ]; then
		checkpath -q -d -m 755 -o $command_user "${socket_path%/*}" || return 1
	fi
	if [ "$runtime_dir" ]; then
		checkpath -q -d -m 750 -o $command_user "$runtime_dir" || return 1
	fi
	checkpath -f -m 640 -o $command_user "$gitaly_logfile"
}