From f721c165ffccfca91bd4c5fce929409da19ee2e5 Mon Sep 17 00:00:00 2001 From: Caleb Jasik Date: Thu, 20 Feb 2025 14:28:13 -0600 Subject: [PATCH 1/7] Add `check-swift-format.sh` script that adds folder ignoring to swift-format --- swift-format.sh | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 swift-format.sh diff --git a/swift-format.sh b/swift-format.sh new file mode 100755 index 00000000..4e7f7dd7 --- /dev/null +++ b/swift-format.sh @@ -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 while 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 swift format format --parallel --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 swift format format --parallel --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 \ No newline at end of file From 2e4da592a87228b468f9804f5a5b094938316ec1 Mon Sep 17 00:00:00 2001 From: Caleb Jasik Date: Thu, 20 Feb 2025 14:34:23 -0600 Subject: [PATCH 2/7] Add disabled swift formatting CI check --- .github/workflows/swiftfmt.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/swiftfmt.yml diff --git a/.github/workflows/swiftfmt.yml b/.github/workflows/swiftfmt.yml new file mode 100644 index 00000000..c6b12dee --- /dev/null +++ b/.github/workflows/swiftfmt.yml @@ -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 From 490d3ec24e92b3b09db2ec0282760fdf1de4146d Mon Sep 17 00:00:00 2001 From: Caleb Jasik Date: Thu, 20 Feb 2025 14:45:41 -0600 Subject: [PATCH 3/7] Add `.swiftformatignore` file for the Cocoapods directory --- .swiftformatignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .swiftformatignore diff --git a/.swiftformatignore b/.swiftformatignore new file mode 100644 index 00000000..4a8d9f81 --- /dev/null +++ b/.swiftformatignore @@ -0,0 +1 @@ +ios/Pods/** \ No newline at end of file From dec5670cde3ecb5829711e5a7aa59822551d21be Mon Sep 17 00:00:00 2001 From: Caleb Jasik Date: Thu, 20 Feb 2025 14:58:49 -0600 Subject: [PATCH 4/7] Add README entry for swift formatting --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 901d4544..2f85f8d2 100644 --- a/README.md +++ b/README.md @@ -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. +`./swift-format.sh` can be used to format Swift code in the repo. + +Once `swift-format` supports ignoring directories (), we can move to a method of running it more like what describes. # Release From 4efc13a80e5606adc63c3112638af8694a18c056 Mon Sep 17 00:00:00 2001 From: Caleb Jasik Date: Thu, 20 Feb 2025 15:06:34 -0600 Subject: [PATCH 5/7] Ask xcode to run `swift-format` and format recurisively. --- swift-format.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/swift-format.sh b/swift-format.sh index 4e7f7dd7..5a00291c 100755 --- a/swift-format.sh +++ b/swift-format.sh @@ -26,14 +26,14 @@ 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 swift format format --parallel --in-place + 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 swift format format --parallel --in-place + git ls-files -z '*.swift' | xargs -0 xcrun swift-format --parallel --recursive --in-place # log "Running swift format lint..." From 597eb2709aff5e7c66b08b5364e0f36d867d2738 Mon Sep 17 00:00:00 2001 From: Caleb Jasik Date: Thu, 20 Feb 2025 14:59:32 -0600 Subject: [PATCH 6/7] Enable format check to ensure it fails --- .github/workflows/swiftfmt.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/swiftfmt.yml b/.github/workflows/swiftfmt.yml index c6b12dee..da93362b 100644 --- a/.github/workflows/swiftfmt.yml +++ b/.github/workflows/swiftfmt.yml @@ -17,6 +17,5 @@ jobs: with: show-progress: false - # Re-enable in follow-up PR that does the formatting. - # - name: Check formating - # run: ./swift-format.sh check + - name: Check formating + run: ./swift-format.sh check From 713b119d12498326590324d11173cd20c38d2959 Mon Sep 17 00:00:00 2001 From: Caleb Jasik Date: Thu, 20 Feb 2025 15:01:57 -0600 Subject: [PATCH 7/7] Disable format check, as the check failed as we desire: --- .github/workflows/swiftfmt.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swiftfmt.yml b/.github/workflows/swiftfmt.yml index da93362b..c6b12dee 100644 --- a/.github/workflows/swiftfmt.yml +++ b/.github/workflows/swiftfmt.yml @@ -17,5 +17,6 @@ jobs: with: show-progress: false - - name: Check formating - run: ./swift-format.sh check + # Re-enable in follow-up PR that does the formatting. + # - name: Check formating + # run: ./swift-format.sh check