CartoDB/cartodb20

View on GitHub
.github/workflows/orm-check.yml

Summary

Maintainability
Test Coverage
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@v2

      - 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\|class DBService' -- 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