Skip to content

Commit c2c0648

Browse files
committed
feat: switch from Makefile to Mise
1 parent ddd0ceb commit c2c0648

12 files changed

Lines changed: 146 additions & 203 deletions

File tree

.github/workflows/ci.yml

Lines changed: 55 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@ on:
1313
- "Source/**"
1414
- "Tests/**"
1515

16+
permissions:
17+
contents: read
18+
19+
concurrency:
20+
group: typhoon-${{ github.head_ref }}
21+
cancel-in-progress: true
22+
23+
env:
24+
SCHEME_NAME: "Typhoon"
25+
1626
jobs:
1727
SwiftLint:
1828
runs-on: ubuntu-latest
@@ -24,37 +34,8 @@ jobs:
2434
args: --strict
2535
env:
2636
DIFF_BASE: ${{ github.base_ref }}
27-
macOS:
28-
name: ${{ matrix.name }}
29-
runs-on: ${{ matrix.runsOn }}
30-
env:
31-
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
32-
timeout-minutes: 20
33-
strategy:
34-
fail-fast: false
35-
matrix:
36-
include:
37-
- xcode: "Xcode_26.0.1"
38-
runsOn: macOS-26
39-
name: "macOS 26, Xcode 26.0, Swift 6.2.0"
40-
- xcode: "Xcode_16.1"
41-
runsOn: macOS-14
42-
name: "macOS 14, Xcode 16.1, Swift 6.0.2"
43-
- xcode: "Xcode_15.4"
44-
runsOn: macOS-14
45-
name: "macOS 14, Xcode 15.4, Swift 5.10"
46-
steps:
47-
- uses: actions/checkout@v5
48-
- name: ${{ matrix.name }}
49-
run: xcodebuild test -scheme "Typhoon" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
50-
- name: Upload test coverage reports to Codecov
51-
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
52-
with:
53-
scheme_name: Typhoon
54-
filename: ${{ matrix.name }}
55-
token: ${{ secrets.CODECOV_TOKEN }}
5637

57-
iOS:
38+
test-apple-platforms:
5839
name: ${{ matrix.name }}
5940
runs-on: ${{ matrix.runsOn }}
6041
env:
@@ -64,100 +45,45 @@ jobs:
6445
fail-fast: false
6546
matrix:
6647
include:
67-
- destination: "OS=26.0.1,name=iPhone 17 Pro"
68-
xcode: "Xcode_26.0.1"
69-
runsOn: macOS-26
70-
name: "OS=26.0, Xcode 26.0, Swift 6.2.0"
71-
- destination: "OS=18.1,name=iPhone 16 Pro"
72-
name: "iOS 18.1"
73-
xcode: "Xcode_16.1"
74-
runsOn: macOS-14
75-
- destination: "OS=17.4,name=iPhone 15 Pro"
76-
name: "iOS 17.4"
77-
xcode: "Xcode_15.3"
78-
runsOn: macos-14
79-
steps:
80-
- uses: actions/checkout@v5
81-
- name: ${{ matrix.name }}
82-
run: xcodebuild test -scheme "Typhoon" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
83-
- name: Upload test coverage reports to Codecov
84-
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
85-
with:
86-
scheme_name: Typhoon
87-
filename: ${{ matrix.name }}
88-
token: ${{ secrets.CODECOV_TOKEN }}
48+
# macOS
49+
- { platform: macOS, name: "macOS 26, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "platform=macOS" }
50+
- { platform: macOS, name: "macOS 14, Xcode 16.1, Swift 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "platform=macOS" }
51+
- { platform: macOS, name: "macOS 14, Xcode 15.4, Swift 5.10", xcode: "Xcode_15.4", runsOn: macOS-14, destination: "platform=macOS" }
8952

90-
tvOS:
91-
name: ${{ matrix.name }}
92-
runs-on: ${{ matrix.runsOn }}
93-
env:
94-
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
95-
timeout-minutes: 20
96-
strategy:
97-
fail-fast: false
98-
matrix:
99-
include:
100-
- destination: "OS=26.0,name=Apple TV"
101-
xcode: "Xcode_26.0.1"
102-
runsOn: macOS-26
103-
name: "tvOS 26.0"
104-
- destination: "OS=18.1,name=Apple TV"
105-
name: "tvOS 18.1"
106-
xcode: "Xcode_16.1"
107-
runsOn: macOS-14
108-
- destination: "OS=17.4,name=Apple TV"
109-
name: "tvOS 17.4"
110-
xcode: "Xcode_15.3"
111-
runsOn: macos-14
112-
steps:
113-
- uses: actions/checkout@v5
114-
- name: ${{ matrix.name }}
115-
run: xcodebuild test -scheme "Typhoon" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
116-
- name: Upload test coverage reports to Codecov
117-
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
118-
with:
119-
scheme_name: Typhoon
120-
filename: ${{ matrix.name }}
121-
token: ${{ secrets.CODECOV_TOKEN }}
53+
# iOS
54+
- { platform: iOS, name: "iOS 26.0, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0.1,name=iPhone 17 Pro" }
55+
- { platform: iOS, name: "iOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=iPhone 16 Pro" }
56+
- { platform: iOS, name: "iOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=iPhone 15 Pro" }
12257

123-
watchOS:
124-
name: ${{ matrix.name }}
125-
runs-on: ${{ matrix.runsOn }}
126-
env:
127-
DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer"
128-
timeout-minutes: 20
129-
strategy:
130-
fail-fast: false
131-
matrix:
132-
include:
133-
- destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)"
134-
xcode: "Xcode_26.0.1"
135-
runsOn: macOS-26
136-
name: "watchOS 26.0"
137-
- destination: "OS=11.1,name=Apple Watch Series 10 (46mm)"
138-
name: "watchOS 11.1"
139-
xcode: "Xcode_16.1"
140-
runsOn: macOS-14
141-
- destination: "OS=10.5,name=Apple Watch Series 9 (45mm)"
142-
name: "watchOS 10.5"
143-
xcode: "Xcode_15.3"
144-
runsOn: macOS-14
145-
- destination: "OS=10.4,name=Apple Watch Series 9 (45mm)"
146-
name: "watchOS 10.4"
147-
xcode: "Xcode_15.3"
148-
runsOn: macos-14
58+
# tvOS
59+
- { platform: tvOS, name: "tvOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple TV" }
60+
- { platform: tvOS, name: "tvOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=Apple TV" }
61+
- { platform: tvOS, name: "tvOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=Apple TV" }
62+
63+
# watchOS
64+
- { platform: watchOS, name: "watchOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" }
65+
- { platform: watchOS, name: "watchOS 11.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" }
66+
- { platform: watchOS, name: "watchOS 10.5", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" }
67+
- { platform: watchOS, name: "watchOS 10.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" }
14968
steps:
150-
- uses: actions/checkout@v5
151-
- name: ${{ matrix.name }}
152-
run: xcodebuild test -scheme "Typhoon" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
153-
- name: Upload test coverage reports to Codecov
69+
- name: Checkout code
70+
uses: actions/checkout@v5
71+
- name: Run tests - ${{ matrix.name }}
72+
run: |
73+
xcodebuild test \
74+
-scheme "${{ env.SCHEME_NAME }}" \
75+
-destination "${{ matrix.destination }}" \
76+
-enableCodeCoverage YES \
77+
-resultBundlePath "test_output/${{ matrix.name }}.xcresult" \
78+
clean || exit 1
79+
- name: Upload test coverage to Codecov
15480
uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
15581
with:
156-
scheme_name: Typhoon
82+
scheme_name: ${{ env.SCHEME_NAME }}
15783
filename: ${{ matrix.name }}
15884
token: ${{ secrets.CODECOV_TOKEN }}
15985

160-
spm:
86+
spm-build:
16187
name: ${{ matrix.name }}
16288
runs-on: ${{ matrix.runsOn }}
16389
env:
@@ -167,37 +93,33 @@ jobs:
16793
fail-fast: false
16894
matrix:
16995
include:
170-
- destination: "macOS 26, SPM 6.2.0 Test"
171-
xcode: "Xcode_26.0.1"
172-
runsOn: macOS-26
173-
- destination: "macOS 15, SPM 6.0.2 Test"
174-
xcode: "Xcode_16.0"
175-
runsOn: macOS-15
176-
- name: "macOS 14, SPM 6.0.2 Test"
177-
xcode: "Xcode_16.1"
178-
runsOn: macOS-14
179-
- name: "macOS 14, SPM 5.10.0 Test"
180-
xcode: "Xcode_15.3"
181-
runsOn: macos-14
96+
- { name: "macOS 26, SPM 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26 }
97+
- { name: "macOS 15, SPM 6.0.2", xcode: "Xcode_16.0", runsOn: macOS-15 }
98+
- { name: "macOS 14, SPM 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14 }
99+
- { name: "macOS 14, SPM 5.10.0", xcode: "Xcode_15.3", runsOn: macOS-14 }
182100
steps:
183-
- uses: actions/checkout@v5
184-
- name: ${{ matrix.name }}
101+
- name: Checkout code
102+
uses: actions/checkout@v5
103+
- name: Build with Swift Package Manager - ${{ matrix.name }}
185104
run: swift build -c release
186105

187106
merge-test-reports:
188-
needs: [iOS, macOS, watchOS, tvOS]
107+
needs: test-apple-platforms
189108
runs-on: macos-15
190109
steps:
191110
- name: Download artifacts
192111
uses: actions/download-artifact@v6
193112
with:
194113
path: test_output
114+
195115
- run: xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
196-
- name: Upload Merged Artifact
116+
117+
- name: Upload merged test results
197118
uses: actions/upload-artifact@v5
198119
with:
199-
name: MergedResult
120+
name: MergedTestResults
200121
path: test_output/final
122+
retention-days: 30
201123

202124
discover-typos:
203125
name: Discover Typos

.swiftformat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Stream rules
22

3-
--swiftversion 5.3
3+
--swiftversion 5.10
44

55
# Use 'swiftformat --options' to list all of the possible options
66

.swiftlint.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ disabled_rules:
1515
- opening_brace
1616

1717
opt_in_rules: # some rules are only opt-in
18-
- anyobject_protocol
1918
- array_init
2019
- attributes
2120
- closure_body_length
@@ -44,7 +43,6 @@ opt_in_rules: # some rules are only opt-in
4443
- ibinspectable_in_extension
4544
- identical_operands
4645
- implicit_return
47-
- inert_defer
4846
- joined_default_parameter
4947
- last_where
5048
- legacy_multiple

Makefile

Lines changed: 0 additions & 19 deletions
This file was deleted.

Sources/Typhoon/Classes/RetryPolicyService/IRetryPolicyService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//
22
// Typhoon
3-
// Copyright © 2024 Space Code. All rights reserved.
3+
// Copyright © 2023 Space Code. All rights reserved.
44
//
55

66
import Foundation

Sources/Typhoon/Classes/RetryPolicyService/RetryPolicyService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//
22
// Typhoon
3-
// Copyright © 2024 Space Code. All rights reserved.
3+
// Copyright © 2023 Space Code. All rights reserved.
44
//
55

66
import Foundation

Sources/Typhoon/Classes/Strategy/RetryPolicyStrategy.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//
22
// Typhoon
3-
// Copyright © 2024 Space Code. All rights reserved.
3+
// Copyright © 2023 Space Code. All rights reserved.
44
//
55

66
import Foundation
@@ -42,23 +42,23 @@ public enum RetryPolicyStrategy: Sendable {
4242
public var retries: Int {
4343
switch self {
4444
case let .constant(retry, _):
45-
return retry
45+
retry
4646
case let .exponential(retry, _, _):
47-
return retry
47+
retry
4848
case let .exponentialWithJitter(retry, _, _, _, _):
49-
return retry
49+
retry
5050
}
5151
}
5252

5353
/// The time duration between retries based on the strategy.
5454
public var duration: DispatchTimeInterval {
5555
switch self {
5656
case let .constant(_, duration):
57-
return duration
57+
duration
5858
case let .exponential(_, _, duration):
59-
return duration
59+
duration
6060
case let .exponentialWithJitter(_, _, _, _, duration):
61-
return duration
61+
duration
6262
}
6363
}
6464
}

Tests/TyphoonTests/UnitTests/RetryPolicyServiceTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//
22
// Typhoon
3-
// Copyright © 2024 Space Code. All rights reserved.
3+
// Copyright © 2023 Space Code. All rights reserved.
44
//
55

66
import Typhoon

hooks/pre-commit

Lines changed: 0 additions & 38 deletions
This file was deleted.

mise.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[tools]
2+
git-cliff = "2.9.1"
3+
swiftlint = "0.62.2"
4+
swiftformat = "0.58.7"
5+
6+
[settings]
7+
experimental = true
8+
9+
[hooks]
10+
postinstall = "mise run install"

0 commit comments

Comments
 (0)