Use swift-format for Swift file formatting (#261)

This commit is contained in:
Caleb Jasik 2025-02-20 16:09:05 -06:00 committed by GitHub
parent e128658599
commit 4d34083572
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 76 additions and 0 deletions

22
.github/workflows/swiftfmt.yml vendored Normal file
View file

@ -0,0 +1,22 @@
name: Swift format
on:
push:
branches:
- main
pull_request:
paths:
- ".github/workflows/swiftfmt.yml"
- "**.swift"
jobs:
swiftfmt:
name: Run swift format
runs-on: macos-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
show-progress: false
# Re-enable in follow-up PR that does the formatting.
# - name: Check formating
# run: ./swift-format.sh check

1
.swiftformatignore Normal file
View file

@ -0,0 +1 @@
ios/Pods/**

View file

@ -41,6 +41,9 @@ dart format lib/ test/ -l 120
In Android Studio, set the line length using Preferences -> Editor -> Code Style -> Dart -> Line length, set it to 120. Enable auto-format with Preferences -> Languages & Frameworks -> Flutter -> Format code on save. In Android Studio, set the line length using Preferences -> Editor -> Code Style -> Dart -> Line length, set it to 120. Enable auto-format with Preferences -> Languages & Frameworks -> Flutter -> Format code on save.
`./swift-format.sh` can be used to format Swift code in the repo.
Once `swift-format` supports ignoring directories (<https://github.com/swiftlang/swift-format/issues/870>), we can move to a method of running it more like what <https://calebhearth.com/swift-format-github-action> describes.
# Release # Release

50
swift-format.sh Executable file
View file

@ -0,0 +1,50 @@
#!/bin/bash
##===----------------------------------------------------------------------===##
##
## This source file is part of the Swift.org open source project
##
## Copyright (c) 2024 Apple Inc. and the Swift project authors
## Licensed under Apache License v2.0 with Runtime Library Exception
##
## See https://swift.org/LICENSE.txt for license information
## See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
##
##===----------------------------------------------------------------------===##
# Vendored from <https://github.com/swiftlang/github-workflows/blob/main/.github/workflows/scripts/check-swift-format.sh> while <https://github.com/swiftlang/swift-format/issues/870> is open.
# This file has been modified to only check formatting, with no linting, and to require a `check` command flag to fail when formatting was performed.
set -euo pipefail
log() { printf -- "** %s\n" "$*" >&2; }
error() { printf -- "** ERROR: %s\n" "$*" >&2; }
fatal() { error "$@"; exit 1; }
if [[ -f .swiftformatignore ]]; then
log "Found swiftformatignore file..."
log "Running swift format format..."
tr '\n' '\0' < .swiftformatignore| xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 xcrun swift-format --parallel --recursive --in-place
# log "Running swift format lint..."
# tr '\n' '\0' < .swiftformatignore | xargs -0 -I% printf '":(exclude)%" '| xargs git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel
else
log "Running swift format format..."
git ls-files -z '*.swift' | xargs -0 xcrun swift-format --parallel --recursive --in-place
# log "Running swift format lint..."
# git ls-files -z '*.swift' | xargs -0 swift format lint --strict --parallel
fi
if [ "${1-default}" = "check" ]; then
log "Checking for modified files..."
GIT_PAGER='' git diff --exit-code '*.swift'
log "✅ Found no formatting issues."
fi