Files
mmkrp_2026/gamemodes/darkrp/.github/scripts/check-modified-subtree.sh
2026-03-15 14:54:49 +03:00

120 lines
2.5 KiB
Bash

#!/usr/bin/env bash
#
# Prints a list of errors for any dependencies that have been edited.
# Dependencies should be edited in their respective repositories
#
echo 'Checking for any dependency changes.'
set -o errexit # Exit for any error
set -o nounset # Error when referencing unset vars
commit=$(
git rev-list \
--first-parent origin/master \
--max-count=1
)
files=$(
git diff \
--name-only \
"$commit"
)
# Template for the GitHub summary
template="
> [!WARNING]
> Files from **[{project}]({repository})** have been modified!
> These changes originally come from [{project}]({repository}), but are synchronized to DarkRP.
> These files should be edited in the original repositories instead.
>
{files}
>
"
# Trim leading space for Markdown compatibility
template="$( echo "$template" | sed 's/^[[:space:]]*//' )"
failed=false
function check {
local name="$1"
local path="^$2"
local repo="$3"
# Check if any matching files were modified
local matched=$(
echo "$files" |
grep --perl-regexp "$path"
)
# Ignore if nothing matched
if [ -z "$matched" ] ; then
return
fi
# Append info to GitHub's summary
local info="$template"
matched="$(printf -- '> `%s` \n' "$matched")"
info=${info//\{repository\}/$repo}
info=${info//\{project\}/$name}
info=${info//\{files\}/$matched}
echo "$info" >> "$GITHUB_STEP_SUMMARY"
failed=true
}
check "Falco's Prop Protection" \
'gamemode/modules/fpp/pp/' \
'https://github.com/fptje/falcos-Prop-protection'
check "FN Library" \
'gamemode/libraries/fn.lua' \
'https://github.com/fptje/GModFunctional'
check "MySQLite Library" \
'gamemode/libraries/mysqlite/mysqlite.lua' \
'https://github.com/fptje/MySQLite'
check "Simplerr Library" \
'gamemode/libraries/simplerr.lua' \
'https://github.com/fptje/simplerr'
check "CAMI Library" \
'gamemode/libraries/sh_cami.lua' \
'https://github.com/glua/CAMI'
check "FSpectate" \
'gamemode/modules/fspectate/' \
'https://github.com/fptje/FSpectate'
if [[ "$failed" = true ]] ; then
echo 'Some dependencies have been modified!'
exit 1
fi
echo 'No dependencies have been modified.'
exit 0