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