#!/usr/bin/env bash legacy_instance_dir="$STATE_DIRECTORY/$(hostname)" instance_dir="$STATE_DIRECTORY/$1" runner_url="$2" runner_config_file="$3" shift 3 runner_labels="$(IFS=,; printf '%s' "$*")" if [ ! -e "$instance_dir" ] && [ -d "$legacy_instance_dir" ]; then mv "$legacy_instance_dir" "$instance_dir" fi mkdir -vp "$instance_dir" cd "$instance_dir" || exit 1 token_hash_file="$instance_dir/.token-hash" token_hash_current="$(printf '%s' "$TOKEN" | sha256sum | cut -d' ' -f1)" token_hash_stored="$(cat "$token_hash_file" 2>/dev/null || echo "")" labels_file="$instance_dir/.labels" labels_wanted="$(printf '%s\n' "$@" | sort)" labels_current="$(cat "$labels_file" 2>/dev/null || echo 0)" if [ ! -e "$instance_dir/.runner" ] || [ "$labels_wanted" != "$labels_current" ] || [ "$token_hash_current" != "$token_hash_stored" ]; then rm -v "$instance_dir/.runner" || true gitea-runner register --no-interactive \ --instance "$runner_url" \ --token "$TOKEN" \ --name "jeeves-$(hostname)" \ --labels "$runner_labels" \ --config "$runner_config_file" printf '%s' "$token_hash_current" > "$token_hash_file" printf '%s\n' "$labels_wanted" > "$labels_file" fi