| @@ -0,0 +1,45 @@ |
| | # Formatting, as `just format` checks it: `swiftformat --lint` over Grain |
| | # and GrainTests with the repository's .swiftformat, on pushes to main and |
| | # pulls into it. It lists each file it would change and fails if there is |
| | # one; `just format-fix` changes them. |
| | # |
| | # The build and the tests are not here, nor anything else that needs Xcode: |
| | # the runner is Linux, and xcodebuild runs on macOS alone. SwiftFormat and |
| | # SwiftLint (lint.yml) are what has a Linux build. |
| | # |
| | # SwiftFormat is its Linux release, pinned by version and SHA-256, so a |
| | # release's new rules land on purpose rather than with an unrelated push. |
| | # 0.62.1 is the version the code is formatted with: 0.64.5 adds rules |
| | # (repeatedGuard, nestedIf, extensionAttributes) that main does not pass, |
| | # and a bump here comes with `just format-fix` run on that version. |
| | # Its own image will not do: the runner starts the image with |
| | # `tail -f /dev/null` to run each step in, and the image's entrypoint is |
| | # swiftformat. The download is kept between runs. |
| | image: debian:trixie-slim |
| | on: |
| | push: { refs: [refs/heads/main] } |
| | pull: { base: [refs/heads/main] } |
| | cache: [/opt/swiftformat] |
| | env: |
| | SWIFTFORMAT_VERSION: 0.62.1 |
| | SWIFTFORMAT_SHA256: 61ff55f3581e2144a4ad114831167102c38be853df75c1477d20b40a8e8120aa |
| | steps: |
| | - name: swiftformat |
| | timeout: 10 |
| | run: | |
| | if [ "$(cat /opt/swiftformat/.version 2>/dev/null)" != "$SWIFTFORMAT_VERSION" ]; then |
| | apt-get update -qq |
| | DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends ca-certificates curl unzip >/dev/null |
| | find /opt/swiftformat -mindepth 1 -delete |
| | curl -fsSL -o /tmp/swiftformat.zip "https://github.com/nicklockwood/SwiftFormat/releases/download/$SWIFTFORMAT_VERSION/swiftformat_linux.zip" |
| | echo "$SWIFTFORMAT_SHA256 /tmp/swiftformat.zip" | sha256sum -c - |
| | unzip -q /tmp/swiftformat.zip -d /opt/swiftformat |
| | bin=$(find /opt/swiftformat -type f -name 'swiftformat*' ! -name '*.zip' | head -1) |
| | chmod +x "$bin" && ln -sf "$bin" /opt/swiftformat/swiftformat-bin |
| | echo "$SWIFTFORMAT_VERSION" > /opt/swiftformat/.version |
| | fi |
| | - name: format |
| | timeout: 10 |
| | run: | |
| | /opt/swiftformat/swiftformat-bin --version |
| | /opt/swiftformat/swiftformat-bin Grain GrainTests --lint |