cartodb-4.42/.github/workflows/orm-check.yml

47 lines
1.6 KiB
YAML
Raw Normal View History

2024-04-06 13:25:13 +08:00
name: Check ORM (Sequel) usage
on:
push:
branches-ignore:
- master
jobs:
orm-check:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Checkout current repository
uses: actions/checkout@v1
- name: Check if the last commit modified deprecated Sequel models
shell: bash
run: |
# This script will exit if any of these files is found in the head branch.
ORM_FILES=$(git grep -l 'class.*Sequel::Model' -- app/models)
MODIFIED_FILES=()
while IFS='$\n' read -r c; do
# Mark files as modified if new lines have been added
added=$(echo $c | awk '{print $1}')
removed=$(echo $c | awk '{print $2}')
is_numeric='^[0-9]+$'
if [[ $added =~ $is_numeric && $removed =~ $is_numeric ]]; then
summary=$(( $added - $removed ))
filename=$(echo $c | awk '{for(i=3;i<=NF;++i)print $i}')
if [ $summary -gt 0 ]; then
for orm in $ORM_FILES; do
if [ $filename = $orm ]; then
MODIFIED_FILES+=($filename)
fi
done
fi
fi
done < <(git diff $(git merge-base $(git rev-parse HEAD) origin/master) --numstat)
if [[ ${#MODIFIED_FILES[@]} -gt 0 ]]; then
for i in ${MODIFIED_FILES[@]}; do
echo "::error file=$i::This file has been flagged to be migrated, please do not add new lines."
done
exit 1
fi
exit 0