| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- name: autofix.ci
- on:
- pull_request:
- branches: ["main"]
- permissions:
- contents: read
-
- jobs:
- autofix:
- if: github.repository == 'langgenius/dify'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
-
- # Use uv to ensure we have the same ruff version in CI and locally.
- - uses: astral-sh/setup-uv@v6
- with:
- python-version: "3.12"
- - run: |
- cd api
- uv sync --dev
- # Fix lint errors
- uv run ruff check --fix .
- # Format code
- uv run ruff format .
-
- - name: ast-grep
- run: |
- uvx --from ast-grep-cli sg --pattern 'db.session.query($WHATEVER).filter($HERE)' --rewrite 'db.session.query($WHATEVER).where($HERE)' -l py --update-all
- uvx --from ast-grep-cli sg --pattern 'session.query($WHATEVER).filter($HERE)' --rewrite 'session.query($WHATEVER).where($HERE)' -l py --update-all
- # Convert Optional[T] to T | None (ignoring quoted types)
- cat > /tmp/optional-rule.yml << 'EOF'
- id: convert-optional-to-union
- language: python
- rule:
- kind: generic_type
- all:
- - has:
- kind: identifier
- pattern: Optional
- - has:
- kind: type_parameter
- has:
- kind: type
- pattern: $T
- fix: $T | None
- EOF
- uvx --from ast-grep-cli sg scan --inline-rules "$(cat /tmp/optional-rule.yml)" --update-all
- # Fix forward references that were incorrectly converted (Python doesn't support "Type" | None syntax)
- find . -name "*.py" -type f -exec sed -i.bak -E 's/"([^"]+)" \| None/Optional["\1"]/g; s/'"'"'([^'"'"']+)'"'"' \| None/Optional['"'"'\1'"'"']/g' {} \;
- find . -name "*.py.bak" -type f -delete
-
- - name: mdformat
- run: |
- uvx mdformat .
-
- - name: Install pnpm
- uses: pnpm/action-setup@v4
- with:
- package_json_file: web/package.json
- run_install: false
-
- - name: Setup NodeJS
- uses: actions/setup-node@v4
- with:
- node-version: 22
- cache: pnpm
- cache-dependency-path: ./web/package.json
-
- - name: Web dependencies
- working-directory: ./web
- run: pnpm install --frozen-lockfile
-
- - name: oxlint
- working-directory: ./web
- run: |
- pnpx oxlint --fix
-
- - uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
|