diff options
Diffstat (limited to '.github/workflows/static_checks.yml')
-rw-r--r-- | .github/workflows/static_checks.yml | 69 |
1 files changed, 49 insertions, 20 deletions
diff --git a/.github/workflows/static_checks.yml b/.github/workflows/static_checks.yml index b2ab913234..8ef49c4539 100644 --- a/.github/workflows/static_checks.yml +++ b/.github/workflows/static_checks.yml @@ -8,38 +8,58 @@ concurrency: jobs: static-checks: - name: Static Checks (clang-format, black format, file format, documentation checks) - runs-on: ubuntu-20.04 + name: Code style, file formatting, and docs + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v3 + with: + fetch-depth: 2 + + - name: Install APT dependencies + uses: awalsh128/cache-apt-pkgs-action@latest + with: + packages: dos2unix libxml2-utils moreutils - - name: Install dependencies + - name: Install Python dependencies and general setup run: | - sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main" - sudo apt-get install -qq dos2unix clang-format-15 libxml2-utils python3-pip moreutils - sudo update-alternatives --remove-all clang-format || true - sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-15 100 - sudo pip3 install black==22.3.0 pytest==7.1.2 mypy==0.971 + pip3 install black==22.3.0 pytest==7.1.2 mypy==0.971 git config diff.wsErrorHighlight all + - name: Get changed files + id: changed-files + run: | + if [ "${{ github.event_name }}" == "pull_request" ]; then + files=$(git diff-tree --no-commit-id --name-only -r ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} 2> /dev/null) + elif [ "${{ github.event_name }}" == "push" -a "${{ github.event.forced }}" == "false" -a "${{ github.event.created }}" == "false" ]; then + files=$(git diff-tree --no-commit-id --name-only -r ${{ github.event.before }}..${{ github.event.after }} 2> /dev/null) + fi + echo "$files" >> changed.txt + cat changed.txt + - name: File formatting checks (file_format.sh) run: | - bash ./misc/scripts/file_format.sh + bash ./misc/scripts/file_format.sh changed.txt - name: Header guards formatting checks (header_guards.sh) run: | - bash ./misc/scripts/header_guards.sh + bash ./misc/scripts/header_guards.sh changed.txt - name: Python style checks via black (black_format.sh) run: | - bash ./misc/scripts/black_format.sh + if grep -qE '*\.py|SConstruct|SCsub' changed.txt || [ ! -s changed.txt ]; then + bash ./misc/scripts/black_format.sh + else + echo "Skipping Python formatting as no Python files were changed." + fi - name: Python scripts static analysis (mypy_check.sh) run: | - bash ./misc/scripts/mypy_check.sh + if grep -qE '*\.py|SConstruct|SCsub' changed.txt || [ ! -s changed.txt ]; then + bash ./misc/scripts/mypy_check.sh + else + echo "Skipping Python static analysis as no Python files were changed." + fi - name: Python builders checks via pytest (pytest_builders.sh) run: | @@ -47,10 +67,14 @@ jobs: - name: JavaScript style and documentation checks via ESLint and JSDoc run: | - cd platform/web - npm ci - npm run lint - npm run docs -- -d dry-run + if grep -q "platform/web" changed.txt || [ ! -s changed.txt ]; then + cd platform/web + npm ci + npm run lint + npm run docs -- -d dry-run + else + echo "Skipping JavaScript formatting as no Web/JS files were changed." + fi - name: Class reference schema checks run: | @@ -62,11 +86,16 @@ jobs: - name: Style checks via clang-format (clang_format.sh) run: | - bash ./misc/scripts/clang_format.sh + clang-format --version + bash ./misc/scripts/clang_format.sh changed.txt - name: Style checks via dotnet format (dotnet_format.sh) run: | - bash ./misc/scripts/dotnet_format.sh + if grep -q "modules/mono" changed.txt || [ ! -s changed.txt ]; then + bash ./misc/scripts/dotnet_format.sh + else + echo "Skipping dotnet format as no C# files were changed." + fi - name: Spell checks via codespell uses: codespell-project/actions-codespell@v1 |