From 67b03a459da39a1940f8a88652ccbe27e6c64f5f Mon Sep 17 00:00:00 2001 From: ultimateownsz Date: Thu, 27 Feb 2025 23:06:15 +0100 Subject: [PATCH 1/3] refactor the linter This workflow is flexible, supporting multiple Python-based repositories while optimizing dependency management and reducing redundant actions through conditional steps. --- .github/workflows/lint_and_test.yml | 46 +++++++++++------------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/.github/workflows/lint_and_test.yml b/.github/workflows/lint_and_test.yml index f29d561..6464d6b 100644 --- a/.github/workflows/lint_and_test.yml +++ b/.github/workflows/lint_and_test.yml @@ -15,46 +15,34 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - # - name: Exit if not Pyceaas repository - # run: | - # if [ "${{ github.repository }}" != "PyCeas/Pyceas" ]; then - # echo "Not running in PyCeas repository. Exiting." - # exit 0 - # fi - - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - - name: Install dependencies + - name: Install dependencies (if requirements.txt exists) run: | - python -m pip install --upgrade pip - pip install ruff mypy pygame-ce pytmx + if [ - f requirements.txt ]; then + echo "requirements.txt found. Installing dependencies." + python -m pip install --upgrade pip + pip install -r requirements.txt + else + echo "No requirements.txt found. Installing ruff and mypy." + python -m pip install --upgrade pip + pip install ruff mypy + fi - name: Check for Python files - id: check_files run: | - git ls-files '*.py' > files.txt - if [ ! -s files.txt ]; then - echo "No Python files found. Skipping lint and type-check." + if ! git Is-files '*py' | grep -q '.'; then + echo "No Python files found. Exiting." + exit 0 fi - - name: Run ruff - if: success() - run: | - if [ -s files.txt ]; then - ruff check $(cat files.txt) - else - echo "Skipping ruff; no Python files found." - fi + run: ruff check . - name: Run mypy - if: success() - run: | - if [ -s files.txt ]; then - mypy $(cat files.txt) - else - echo "Skipping mypy; no Python files found." - fi + run: mypy . + + From 5043fdd70c4ec4ad8884c9be0353a8469c103bcc Mon Sep 17 00:00:00 2001 From: ultimateownsz Date: Thu, 27 Feb 2025 23:22:55 +0100 Subject: [PATCH 2/3] Add reusable workflow for linting and type checking with configurable Python version This commit prepares the workflow for general usage and promotes reusability within the organization. --- .github/workflows/lint_and_test.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint_and_test.yml b/.github/workflows/lint_and_test.yml index 6464d6b..ea6ff94 100644 --- a/.github/workflows/lint_and_test.yml +++ b/.github/workflows/lint_and_test.yml @@ -1,11 +1,19 @@ name: Test (lint and typehints) on: - push: - branches: - - main - pull_request: - types: [opened, synchronize, reopened] + workflow_call: + inputs: + python-version: + required: false + type: string + default: '3.12' # Default Python version + requirements_path: + required: false + type: string + secrets: + repo_token: + required: true + jobs: lint_and_typehints: From 82c96cdc2d752a729c3833a1098d86d35b9704e6 Mon Sep 17 00:00:00 2001 From: ultimateownsz Date: Thu, 27 Feb 2025 23:30:18 +0100 Subject: [PATCH 3/3] fix correct command for python files --- .github/workflows/lint_and_test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint_and_test.yml b/.github/workflows/lint_and_test.yml index ea6ff94..f668f75 100644 --- a/.github/workflows/lint_and_test.yml +++ b/.github/workflows/lint_and_test.yml @@ -41,11 +41,11 @@ jobs: fi - name: Check for Python files - run: | - if ! git Is-files '*py' | grep -q '.'; then - echo "No Python files found. Exiting." - exit 0 - fi + run: | + if ! git ls-files '*.py' | grep -q '.'; then + echo "No Python files found. Exiting." + exit 0 + fi - name: Run ruff run: ruff check .