120 lines
2.5 KiB
Bash
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
|