autofix_pr.yml

  1# Generated from xtask::workflows::autofix_pr
  2# Rebuild with `cargo xtask workflows`.
  3name: autofix_pr
  4run-name: 'autofix PR #${{ inputs.pr_number }}'
  5on:
  6  workflow_dispatch:
  7    inputs:
  8      pr_number:
  9        description: pr_number
 10        required: true
 11        type: string
 12      run_clippy:
 13        description: run_clippy
 14        type: boolean
 15        default: 'true'
 16jobs:
 17  run_autofix:
 18    runs-on: namespace-profile-16x32-ubuntu-2204
 19    steps:
 20    - name: steps::checkout_repo
 21      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 22      with:
 23        clean: false
 24    - name: autofix_pr::run_autofix::checkout_pr
 25      run: gh pr checkout ${{ inputs.pr_number }}
 26      shell: bash -euxo pipefail {0}
 27      env:
 28        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 29    - name: steps::setup_cargo_config
 30      run: |
 31        mkdir -p ./../.cargo
 32        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
 33      shell: bash -euxo pipefail {0}
 34    - name: steps::cache_rust_dependencies_namespace
 35      uses: namespacelabs/nscloud-cache-action@v1
 36      with:
 37        cache: rust
 38        path: ~/.rustup
 39    - name: steps::setup_linux
 40      run: ./script/linux
 41      shell: bash -euxo pipefail {0}
 42    - name: steps::install_mold
 43      run: ./script/install-mold
 44      shell: bash -euxo pipefail {0}
 45    - name: steps::download_wasi_sdk
 46      run: ./script/download-wasi-sdk
 47      shell: bash -euxo pipefail {0}
 48    - name: steps::setup_pnpm
 49      uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
 50      with:
 51        version: '9'
 52    - name: autofix_pr::run_autofix::install_cargo_machete
 53      if: ${{ inputs.run_clippy }}
 54      uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
 55      with:
 56        command: install
 57        args: cargo-machete@0.7.0
 58    - name: autofix_pr::run_autofix::run_cargo_fix
 59      if: ${{ inputs.run_clippy }}
 60      run: cargo fix --workspace --release --all-targets --all-features --allow-dirty --allow-staged
 61      shell: bash -euxo pipefail {0}
 62    - name: autofix_pr::run_autofix::run_cargo_machete_fix
 63      if: ${{ inputs.run_clippy }}
 64      run: cargo machete --fix
 65      shell: bash -euxo pipefail {0}
 66    - name: autofix_pr::run_autofix::run_clippy_fix
 67      if: ${{ inputs.run_clippy }}
 68      run: cargo clippy --workspace --release --all-targets --all-features --fix --allow-dirty --allow-staged
 69      shell: bash -euxo pipefail {0}
 70    - name: autofix_pr::run_autofix::run_prettier_fix
 71      run: ./script/prettier --write
 72      shell: bash -euxo pipefail {0}
 73    - name: autofix_pr::run_autofix::run_cargo_fmt
 74      run: cargo fmt --all
 75      shell: bash -euxo pipefail {0}
 76    - id: create-patch
 77      name: autofix_pr::run_autofix::create_patch
 78      run: |
 79        if git diff --quiet; then
 80            echo "No changes to commit"
 81            echo "has_changes=false" >> "$GITHUB_OUTPUT"
 82        else
 83            git diff > autofix.patch
 84            echo "has_changes=true" >> "$GITHUB_OUTPUT"
 85        fi
 86      shell: bash -euxo pipefail {0}
 87    - name: upload artifact autofix-patch
 88      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
 89      with:
 90        name: autofix-patch
 91        path: autofix.patch
 92        if-no-files-found: ignore
 93        retention-days: '1'
 94    - name: steps::cleanup_cargo_config
 95      if: always()
 96      run: |
 97        rm -rf ./../.cargo
 98      shell: bash -euxo pipefail {0}
 99    outputs:
100      has_changes: ${{ steps.create-patch.outputs.has_changes }}
101  commit_changes:
102    needs:
103    - run_autofix
104    if: needs.run_autofix.outputs.has_changes == 'true'
105    runs-on: namespace-profile-2x4-ubuntu-2404
106    steps:
107    - id: get-app-token
108      name: steps::authenticate_as_zippy
109      uses: actions/create-github-app-token@bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1
110      with:
111        app-id: ${{ secrets.ZED_ZIPPY_APP_ID }}
112        private-key: ${{ secrets.ZED_ZIPPY_APP_PRIVATE_KEY }}
113    - name: steps::checkout_repo_with_token
114      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
115      with:
116        clean: false
117        token: ${{ steps.get-app-token.outputs.token }}
118    - name: autofix_pr::commit_changes::checkout_pr
119      run: gh pr checkout ${{ inputs.pr_number }}
120      shell: bash -euxo pipefail {0}
121      env:
122        GITHUB_TOKEN: ${{ steps.get-app-token.outputs.token }}
123    - name: autofix_pr::download_patch_artifact
124      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53
125      with:
126        name: autofix-patch
127    - name: autofix_pr::commit_changes::apply_patch
128      run: git apply autofix.patch
129      shell: bash -euxo pipefail {0}
130    - name: autofix_pr::commit_changes::commit_and_push
131      run: |
132        git commit -am "Autofix"
133        git push
134      shell: bash -euxo pipefail {0}
135      env:
136        GIT_COMMITTER_NAME: Zed Zippy
137        GIT_COMMITTER_EMAIL: 234243425+zed-zippy[bot]@users.noreply.github.com
138        GIT_AUTHOR_NAME: Zed Zippy
139        GIT_AUTHOR_EMAIL: 234243425+zed-zippy[bot]@users.noreply.github.com
140        GITHUB_TOKEN: ${{ steps.get-app-token.outputs.token }}
141concurrency:
142  group: ${{ github.workflow }}-${{ inputs.pr_number }}
143  cancel-in-progress: true