#!/usr/bin/env bash
#set -euo pipefail

source $HOME/.gamerc

is_related() {
    local teststr=$1
    # 確保變數存在且非空（避免未設定時直接迴圈空跑）
    [[ -n "${HOSTS_SERVERS_RELATED:-}" ]] || return 1

    for prefix in $HOSTS_SERVERS_RELATED; do
        # 重要：把變數用引號包起來，但 * 不要包（保留萬用字元）
        if [[ $teststr == "$prefix"* ]]; then
            return 0
        fi
    done
    return 1
}

EXPECTED_CNT=0
ACTUAL_CNT=0

IFS='_' read -ra parts <<< "$HOST_NAME"
for server in "${parts[@]}"; do
	unset mapping
	unset CHECKED
	if is_related "$server"; then
		(( EXPECTED_CNT++ ))
		mapping=$(hostname2server $server); 
		echo "$server => $mapping";
		if [ -n "${mapping+x}" ] && [ -n "$mapping" ]; then
			CHECKED=$(pgrep -f ${mapping})
			#echo "Internal, $CHECKED"
		       	if [ -n "${CHECKED+x}" ] && [ -n "$CHECKED" ]; then
				#echo "ACTUAL_CNT++"
				(( ACTUAL_CNT++ ))
			fi
		fi
	fi
done

echo "EXPECTED_CNT: ${EXPECTED_CNT}"
echo "ACTUAL_CNT: ${ACTUAL_CNT}"

if [ "${EXPECTED_CNT}" -eq "${ACTUAL_CNT}" -a "${EXPECTED_CNT}" -gt 0 -a "${ACTUAL_CNT}" -gt 0 ]; then
	echo "Open Finished";
elif [ "${EXPECTED_CNT}" -eq "${ACTUAL_CNT}" -a "${EXPECTED_CNT}" -eq 0 -a "${ACTUAL_CNT}" -eq 0 ]; then
	echo "Close Finished";
fi
