diff --git a/.github/workflows/gdlint.yml b/.github/workflows/gdlint.yml new file mode 100644 index 0000000..4e4a413 --- /dev/null +++ b/.github/workflows/gdlint.yml @@ -0,0 +1,47 @@ +# Workflow to automatically lint gdscript code +name: gdlint on push + +on: + [push, pull_request] + +jobs: + gdlint: + name: gdlint code + runs-on: ubuntu-latest + + env: + PROBLEMS_THRESHOLD: 88 # The allowed amount of linter problems + + steps: + # Check out the repository + - name: Checkout + uses: actions/checkout@v4 + + # Ensure python is installed + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + # Install gdtoolkit + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + python -m pip install 'gdtoolkit==4.*' + + # Lint all the code directories (except addons) and capture the output + # "|| true" make sure the github action doesn't stop when there are problems + - name: Lint code + run: | + gdlint assets global resources scenes > gdlint_output.txt 2>&1 || true + cat gdlint_output.txt + + # Parse the output and compare with the threshold + - name: Check linter results + run: | + PROBLEMS=$(grep -oP 'Failure: \K\d+' gdlint_output.txt || echo "0") + echo "Problems found: $PROBLEMS, threshold is: $PROBLEMS_THRESHOLD" + if [ "$PROBLEMS" -gt "$PROBLEMS_THRESHOLD" ]; then + echo "Too many linter problems" + exit 1 + fi