#!/sbin/openrc-run
supervisor=supervise-daemon
name="Woodpecker CI agent"
command="/usr/bin/woodpecker-agent"
command_user="woodpecker:woodpecker"

workdir="/var/lib/woodpecker"
config="/etc/woodpecker/agent.conf"
state="/etc/woodpecker/agent-state.conf"
log="/var/log/woodpecker/agent.log"

# Source and export configuration variables
set -a
source $config
set +a

depend() {
	need net
	after firewall

	# If the agent is dependent on the docker backend, ensure it's running.
	if [ "$WOODPECKER_BACKEND" == "docker" ]; then
		need docker
	fi
}

start_pre() {
	# Ensure necessary paths exist for operation
	checkpath -f -m 640 -o "woodpecker:woodpecker" $config
	checkpath -f -m 640 -o "woodpecker:woodpecker" $state
	checkpath -d -m 755 -o "woodpecker:woodpecker" $workdir
	checkpath -f -m 644 -o "woodpecker:woodpecker" $log

	# Verify that woodpecker has access to docker resources if running with the docker backend
	if [ "$WOODPECKER_BACKEND" == "docker" ]; then
		woodpecker_membership=$(groups woodpecker | grep -o "docker")
		if [ "$woodpecker_membership" != "docker" ]; then
			einfo "Woodpecker user is not part of the docker group, correcting.."
			addgroup woodpecker docker
		fi
	fi
}
