Skip to content

Standardize formatting #55

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
May 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[*]
insert_final_newline = true
indent_size = 4 # We can remove this line if anyone has strong opinions.

# swift
[*.swift]
indent_style = tab

# sh
[*.sh]
indent_style = tab

# documentation, utils
[*.{md,mdx,diff}]
trim_trailing_whitespace = false
9 changes: 9 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,12 @@ jobs:
uses: actions/checkout@v4
- name: Link Checker
uses: AlexanderDokuchaev/[email protected]
lint-swift:
name: Lint Swift
runs-on: ubuntu-latest
container: swift:6.0
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Lint Swift
run: swift run --package-path CLI swiftformat . --lint
20 changes: 20 additions & 0 deletions .swiftformat
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# format options
--indent tab
--modifierorder nonisolated,open,public,internal,fileprivate,private,private(set),final,override,required,convenience
--ranges no-space
--extensionacl on-declarations
--funcattributes prev-line
--typeattributes prev-line
--storedvarattrs same-line
--hexgrouping none
--decimalgrouping 3

# rules
--enable isEmpty
--enable wrapEnumCases
--enable wrapMultilineStatementBraces
--disable consistentSwitchCaseSpacing
--disable blankLineAfterSwitchCase

# global
--swiftversion 6.0
15 changes: 15 additions & 0 deletions CLI/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions CLI/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// swift-tools-version: 6.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
name: "CLI",
platforms: [
.macOS(.v14),
],
products: [],
dependencies: [
.package(url: "https://github.com/nicklockwood/SwiftFormat", from: "0.56.1"),
],
targets: []
)
62 changes: 31 additions & 31 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,35 @@
import PackageDescription

let package = Package(
name: "swift-async-queue",
platforms: [
.macOS(.v10_15),
.iOS(.v13),
.tvOS(.v13),
.watchOS(.v6),
.macCatalyst(.v13),
.visionOS(.v1),
],
products: [
.library(
name: "AsyncQueue",
targets: ["AsyncQueue"]
),
],
targets: [
.target(
name: "AsyncQueue",
dependencies: [],
swiftSettings: [
.swiftLanguageMode(.v6),
]
),
.testTarget(
name: "AsyncQueueTests",
dependencies: ["AsyncQueue"],
swiftSettings: [
.swiftLanguageMode(.v6),
]
),
]
name: "swift-async-queue",
platforms: [
.macOS(.v10_15),
.iOS(.v13),
.tvOS(.v13),
.watchOS(.v6),
.macCatalyst(.v13),
.visionOS(.v1),
],
products: [
.library(
name: "AsyncQueue",
targets: ["AsyncQueue"]
),
],
targets: [
.target(
name: "AsyncQueue",
dependencies: [],
swiftSettings: [
.swiftLanguageMode(.v6),
]
),
.testTarget(
name: "AsyncQueueTests",
dependencies: ["AsyncQueue"],
swiftSettings: [
.swiftLanguageMode(.v6),
]
),
]
)
186 changes: 93 additions & 93 deletions Scripts/build.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,111 +5,111 @@ import Foundation
// Usage: build.swift platforms

func execute(commandPath: String, arguments: [String]) throws {
let task = Process()
task.executableURL = .init(filePath: commandPath)
task.arguments = arguments
print("Launching command: \(commandPath) \(arguments.joined(separator: " "))")
try task.run()
task.waitUntilExit()
guard task.terminationStatus == 0 else {
throw TaskError.code(task.terminationStatus)
}
let task = Process()
task.executableURL = .init(filePath: commandPath)
task.arguments = arguments
print("Launching command: \(commandPath) \(arguments.joined(separator: " "))")
try task.run()
task.waitUntilExit()
guard task.terminationStatus == 0 else {
throw TaskError.code(task.terminationStatus)
}
}

enum TaskError: Error {
case code(Int32)
case code(Int32)
}

enum Platform: String, CaseIterable, CustomStringConvertible {
case iOS_18
case tvOS_18
case macOS_15
case macCatalyst_15
case watchOS_11
case visionOS_2

var destination: String {
switch self {
case .iOS_18:
"platform=iOS Simulator,OS=18.0,name=iPad (10th generation)"

case .tvOS_18:
"platform=tvOS Simulator,OS=18.0,name=Apple TV"

case .macOS_15,
.macCatalyst_15:
"platform=OS X"

case .watchOS_11:
"OS=11.0,name=Apple Watch Series 10 (46mm)"

case .visionOS_2:
"OS=2.0,name=Apple Vision Pro"
}
}

var sdk: String {
switch self {
case .iOS_18:
"iphonesimulator"

case .tvOS_18:
"appletvsimulator"

case .macOS_15,
.macCatalyst_15:
"macosx15.0"

case .watchOS_11:
"watchsimulator"

case .visionOS_2:
"xrsimulator"
}
}

var derivedDataPath: String {
".build/derivedData/" + description
}

var description: String {
rawValue
}
case iOS_18
case tvOS_18
case macOS_15
case macCatalyst_15
case watchOS_11
case visionOS_2

var destination: String {
switch self {
case .iOS_18:
"platform=iOS Simulator,OS=18.0,name=iPad (10th generation)"

case .tvOS_18:
"platform=tvOS Simulator,OS=18.0,name=Apple TV"

case .macOS_15,
.macCatalyst_15:
"platform=OS X"

case .watchOS_11:
"OS=11.0,name=Apple Watch Series 10 (46mm)"

case .visionOS_2:
"OS=2.0,name=Apple Vision Pro"
}
}

var sdk: String {
switch self {
case .iOS_18:
"iphonesimulator"

case .tvOS_18:
"appletvsimulator"

case .macOS_15,
.macCatalyst_15:
"macosx15.0"

case .watchOS_11:
"watchsimulator"

case .visionOS_2:
"xrsimulator"
}
}

var derivedDataPath: String {
".build/derivedData/" + description
}

var description: String {
rawValue
}
}

guard CommandLine.arguments.count > 1 else {
print("Usage: build.swift platforms")
throw TaskError.code(1)
print("Usage: build.swift platforms")
throw TaskError.code(1)
}

let rawPlatforms = CommandLine.arguments[1].components(separatedBy: ",")

for rawPlatform in rawPlatforms {
guard let platform = Platform(rawValue: rawPlatform) else {
print("Received unknown platform type \(rawPlatform)")
print("Possible platform types are: \(Platform.allCases)")
throw TaskError.code(1)
}

var xcodeBuildArguments = [
"-scheme", "swift-async-queue",
"-sdk", platform.sdk,
"-derivedDataPath", platform.derivedDataPath,
"-PBXBuildsContinueAfterErrors=0",
"OTHER_SWIFT_FLAGS=-warnings-as-errors",
]

if !platform.destination.isEmpty {
xcodeBuildArguments.append("-destination")
xcodeBuildArguments.append(platform.destination)
}
xcodeBuildArguments.append("-enableCodeCoverage")
xcodeBuildArguments.append("YES")
xcodeBuildArguments.append("build")
xcodeBuildArguments.append("test")
xcodeBuildArguments.append("-test-iterations")
xcodeBuildArguments.append("100")
xcodeBuildArguments.append("-run-tests-until-failure")

try execute(commandPath: "/usr/bin/xcodebuild", arguments: xcodeBuildArguments)
guard let platform = Platform(rawValue: rawPlatform) else {
print("Received unknown platform type \(rawPlatform)")
print("Possible platform types are: \(Platform.allCases)")
throw TaskError.code(1)
}

var xcodeBuildArguments = [
"-scheme", "swift-async-queue",
"-sdk", platform.sdk,
"-derivedDataPath", platform.derivedDataPath,
"-PBXBuildsContinueAfterErrors=0",
"OTHER_SWIFT_FLAGS=-warnings-as-errors",
]

if !platform.destination.isEmpty {
xcodeBuildArguments.append("-destination")
xcodeBuildArguments.append(platform.destination)
}
xcodeBuildArguments.append("-enableCodeCoverage")
xcodeBuildArguments.append("YES")
xcodeBuildArguments.append("build")
xcodeBuildArguments.append("test")
xcodeBuildArguments.append("-test-iterations")
xcodeBuildArguments.append("100")
xcodeBuildArguments.append("-run-tests-until-failure")

try execute(commandPath: "/usr/bin/xcodebuild", arguments: xcodeBuildArguments)
}
Loading