diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..6e763676 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,84 @@ +name: Lint + +on: + push: + branches: + - '*' + pull_request: + branches: + - '*' + +jobs: + frontend: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Changed files in frontend + id: changed-files-frontend + uses: tj-actions/changed-files@v45 + with: + files: 'frontend/**' + + - name: Check if frontend files changed + run: | + if [[ "${{ steps.changed-files-frontend.outputs.changed }}" == "true" ]]; then + echo "Frontend files changed. Proceeding with linting." + else + echo "No frontend files changed. Skipping frontend lint." + exit 0 + fi + + - name: Setup node.js + uses: actions/setup-node@v4 + with: + node-version: 22.x + cache-dependency-path: ./frontend/package-lock.json + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Run eslint + run: npm run lint + + backend: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Changed files in backend + id: changed-files-backend + uses: tj-actions/changed-files@v45 + with: + files: 'backend/**' + + - name: Check if backend files changed + run: | + if [[ "${{ steps.changed-files-backend.outputs.changed }}" == "true" ]]; then + echo "Backend files changed. Proceeding with linting." + else + echo "No backend files changed. Skipping backend lint." + exit 0 + fi + + - name: Setup python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + virtualenvs-create: true + virtualenvs-in-project: true + virtualenvs-path: .venv + installer-parallel: true + + - name: Install dependencies + run: poetry install --no-interaction + + - name: Run isort and flake8 + run: poetry run poe lint