~ knotless Search/
↑↓ move↵ open⇧↵ all results

grain.social/grain-ios

1 collaborator
0
1
main
45 lines · 2.2 KB Raw History
# 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