#!/bin/sh -l beginswith() { case $2 in "$1"*) true;; *) false;; esac; } resource_exists() { local element="$1" local array_str="$2" for i in $array_str; do if [ "$i" = "$element" ]; then return 0 fi done return 1 } RESTART_INDIVIDUAL_RESOURCES=$1 if [ "$RESTART_INDIVIDUAL_RESOURCES" = true ] ; then echo "Will restart individual resources" else echo "Will restart the whole server" fi SERVER_IP=$2 SERVER_PORT=$3 RCON_PASSWORD=$4 RESOURCES_FOLDER=$5 echo "$1" echo "$2" echo "$3" echo "$4" echo "$5" git config --global --add safe.directory /github/workspace if [ ${GITHUB_BASE_REF} ]; then # Pull Request git fetch origin ${GITHUB_BASE_REF} --depth=1 export DIFF=$( git diff --name-only origin/${GITHUB_BASE_REF} ${GITHUB_SHA} ) echo "Diff between origin/${GITHUB_BASE_REF} and ${GITHUB_SHA}" else # Push git fetch origin ${GITHUB_EVENT_BEFORE} --depth=1 export DIFF=$( git diff --name-status ${GITHUB_EVENT_BEFORE} ${GITHUB_SHA} ) echo "Diff between ${GITHUB_EVENT_BEFORE} and ${GITHUB_SHA}" fi resources_to_restart= echo "${DIFF}" | while read -r changed; do STATUS=${changed:0:1} changed=${changed#??} if beginswith ${RESOURCES_FOLDER} "${changed}"; then filtered=${changed##*]/} # Remove subfolders filtered=${filtered%%/*} # Remove filename and get the folder which corresponds to the resource name if ! resource_exists "$filtered" "$resources_to_restart"; then echo "Adding $filtered to resources that need to restart" resources_to_restart="$resources_to_restart $filtered" fi else echo "No in resources" fi done