File: lint.yml

package info (click to toggle)
beets 2.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,016 kB
  • sloc: python: 46,429; javascript: 8,018; xml: 334; sh: 261; makefile: 125
file content (146 lines) | stat: -rw-r--r-- 4,479 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: Lint check
run-name: Lint code
on:
  pull_request:
  push:
    branches:
      - master

concurrency:
  # Cancel previous workflow run when a new commit is pushed to a feature branch
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

env:
  PYTHON_VERSION: 3.9

jobs:
  changed-files:
    runs-on: ubuntu-latest
    name: Get changed files
    outputs:
      any_docs_changed: ${{ steps.changed-doc-files.outputs.any_changed }}
      any_python_changed: ${{ steps.raw-changed-python-files.outputs.any_changed }}
      changed_doc_files: ${{ steps.changed-doc-files.outputs.all_changed_files }}
      changed_python_files: ${{ steps.changed-python-files.outputs.all_changed_files }}
    steps:
      - uses: actions/checkout@v4
      - name: Get changed docs files
        id: changed-doc-files
        uses: tj-actions/changed-files@v46
        with:
          files: |
            docs/**
      - name: Get changed python files
        id: raw-changed-python-files
        uses: tj-actions/changed-files@v46
        with:
          files: |
            **.py
            poetry.lock

      - name: Check changed python files
        id: changed-python-files
        env:
          CHANGED_PYTHON_FILES: ${{ steps.raw-changed-python-files.outputs.all_changed_files }}
        run: |
          if [[ " $CHANGED_PYTHON_FILES " == *" poetry.lock "* ]]; then
            # if poetry.lock is changed, we need to check everything
            CHANGED_PYTHON_FILES="."
          fi
          echo "all_changed_files=$CHANGED_PYTHON_FILES" >> "$GITHUB_OUTPUT"

  format:
    if: needs.changed-files.outputs.any_python_changed == 'true'
    runs-on: ubuntu-latest
    name: Check formatting
    needs: changed-files
    steps:
      - uses: actions/checkout@v4
      - name: Install Python tools
        uses: BrandonLWhite/pipx-install-action@v1.0.3
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: poetry

      - name: Install dependencies
        run: poetry install --only=lint

      - name: Check code formatting
        # the job output will contain colored diffs with what needs adjusting
        run: poe check-format

  lint:
    if: needs.changed-files.outputs.any_python_changed == 'true'
    runs-on: ubuntu-latest
    name: Check linting
    needs: changed-files
    steps:
      - uses: actions/checkout@v4
      - name: Install Python tools
        uses: BrandonLWhite/pipx-install-action@v1.0.3
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: poetry

      - name: Install dependencies
        run: poetry install --only=lint

      - name: Lint code
        run: poe lint --output-format=github ${{ needs.changed-files.outputs.changed_python_files }}

  mypy:
    if: needs.changed-files.outputs.any_python_changed == 'true'
    runs-on: ubuntu-latest
    name: Check types with mypy
    needs: changed-files
    steps:
      - uses: actions/checkout@v4
      - name: Install Python tools
        uses: BrandonLWhite/pipx-install-action@v1.0.3
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: poetry

      - name: Install dependencies
        run: poetry install --only=typing

      - name: Type check code
        uses: liskin/gh-problem-matcher-wrap@v3
        with:
          linters: mypy
          run: poe check-types --show-column-numbers --no-error-summary .

  docs:
    if: needs.changed-files.outputs.any_docs_changed == 'true'
    runs-on: ubuntu-latest
    name: Check docs
    needs: changed-files
    steps:
      - uses: actions/checkout@v4
      - name: Install Python tools
        uses: BrandonLWhite/pipx-install-action@v1.0.3
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ env.PYTHON_VERSION }}
          cache: poetry

      - name: Install dependencies
        run: poetry install --extras=docs

      - name: Add Sphinx problem matchers
        run: |
          echo "::add-matcher::.github/problem-matchers/sphinx-build.json"
          echo "::add-matcher::.github/problem-matchers/sphinx-lint.json"

      - name: Check docs formatting
        run: poe format-docs --check

      - name: Lint docs
        run: poe lint-docs

      - name: Build docs
        run: poe docs -- -e 'SPHINXOPTS=--fail-on-warning --keep-going'