-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPackage.swift
More file actions
311 lines (307 loc) · 14 KB
/
Copy pathPackage.swift
File metadata and controls
311 lines (307 loc) · 14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
// swift-tools-version:6.2
import class Foundation.ProcessInfo
import PackageDescription
var swiftSettings: [SwiftSetting] = [
.swiftLanguageMode(.v5),
]
// Workaround for https://forums.swift.org/t/warnings-as-errors-in-sub-packages/70810/24
if ProcessInfo.processInfo.environment["CI"] == "true" && ProcessInfo.processInfo.environment["SKIP_WARNINGS_SWIFTBEANCOUNT"] != "true" {
swiftSettings.append(contentsOf: [
.treatAllWarnings(as: .error),
.treatWarning("SendableClosureCaptures", as: .warning),
])
}
let package = Package(
name: "SwiftBeanCount",
platforms: [
.macOS(.v13),
.iOS(.v16),
],
products: [
.executable(name: "swiftbeancount", targets: ["SwiftBeanCountCLI"]),
.library(name: "SwiftBeanCountModel", targets: ["SwiftBeanCountModel"]),
.library(name: "SwiftBeanCountParser", targets: ["SwiftBeanCountParser"]),
.library(name: "SwiftBeanCountParserUtils", targets: ["SwiftBeanCountParserUtils"]),
.library(name: "SwiftBeanCountTax", targets: ["SwiftBeanCountTax"]),
.library(name: "SwiftBeanCountStatements", targets: ["SwiftBeanCountStatements"]),
.library(name: "SwiftBeanCountRogersBankMapper", targets: ["SwiftBeanCountRogersBankMapper"]),
.library(name: "SwiftBeanCountCompassCardMapper", targets: ["SwiftBeanCountCompassCardMapper"]),
.library(name: "SwiftBeanCountTangerineMapper", targets: ["SwiftBeanCountTangerineMapper"]),
.library(name: "SwiftBeanCountWealthsimpleMapper", targets: ["SwiftBeanCountWealthsimpleMapper"]),
.library(name: "SwiftBeanCountSheetSync", targets: ["SwiftBeanCountSheetSync"]),
.library(name: "SwiftBeanCountImporter", targets: ["SwiftBeanCountImporter"]),
.library(name: "RogersBankDownloader", targets: ["RogersBankDownloader"]),
.library(name: "WealthsimpleDownloader", targets: ["WealthsimpleDownloader"]),
.library(name: "CompassCardDownloader", targets: ["CompassCardDownloader"]),
.library(name: "TangerineDownloader", targets: ["TangerineDownloader"]),
.library(name: "GoogleAuthentication", targets: ["GoogleAuthentication"])
],
dependencies: [
.package(url: "https://github.com/yaslab/CSV.swift.git", from: "2.5.2"),
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.7.0"),
.package(url: "https://github.com/onevcat/Rainbow", from: "4.2.1"),
.package(url: "https://github.com/scottrhoyt/SwiftyTextTable.git", exact: "0.9.0"),
.package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", exact: "0.65.0"),
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.4.5"),
.package(url: "https://github.com/Nef10/SwiftScraper.git", exact: "0.7.0"),
.package(url: "https://github.com/OAuthSwift/OAuthSwift.git", .upToNextMajor(from: "2.2.0")),
.package(url: "https://github.com/kishikawakatsumi/KeychainAccess.git", .upToNextMajor(from: "4.2.1")),
],
targets: [
.executableTarget(
name: "SwiftBeanCountCLI",
dependencies: [
"SwiftBeanCountModel",
"SwiftBeanCountParser",
"SwiftBeanCountTax",
.product(name: "ArgumentParser", package: "swift-argument-parser"),
"SwiftyTextTable",
"Rainbow",
],
exclude: ["README.md"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountModel",
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountParser",
dependencies: ["SwiftBeanCountModel", "SwiftBeanCountParserUtils"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountParserUtils",
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountTax",
dependencies: ["SwiftBeanCountModel"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountStatements",
dependencies: ["SwiftBeanCountModel"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountRogersBankMapper",
dependencies: [
"SwiftBeanCountModel",
"SwiftBeanCountParserUtils",
"RogersBankDownloader",
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountCompassCardMapper",
dependencies: [
"SwiftBeanCountParserUtils",
"SwiftBeanCountModel",
.product(name: "CSV", package: "CSV.swift"),
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountTangerineMapper",
dependencies: [
"SwiftBeanCountParserUtils",
"SwiftBeanCountModel",
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountWealthsimpleMapper",
dependencies: [
"SwiftBeanCountModel",
"SwiftBeanCountParserUtils",
"WealthsimpleDownloader"
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountSheetSync",
dependencies: [
"SwiftBeanCountModel",
"SwiftBeanCountParser",
.byName(name: "GoogleAuthentication", condition: .when(platforms: [.macOS, .iOS])),
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "SwiftBeanCountImporter",
dependencies: [
.product(name: "CSV", package: "CSV.swift"),
"RogersBankDownloader",
"SwiftBeanCountModel",
"SwiftBeanCountParserUtils",
"SwiftBeanCountRogersBankMapper",
"SwiftBeanCountWealthsimpleMapper",
"SwiftBeanCountCompassCardMapper",
"SwiftBeanCountTangerineMapper",
"WealthsimpleDownloader",
.byName(name: "SwiftBeanCountSheetSync", condition: .when(platforms: [.macOS, .iOS])),
.byName(name: "CompassCardDownloader", condition: .when(platforms: [.macOS, .iOS])),
.byName(name: "TangerineDownloader", condition: .when(platforms: [.macOS, .iOS])),
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "RogersBankDownloader",
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "WealthsimpleDownloader",
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "CompassCardDownloader",
dependencies: [
.product(name: "SwiftScraper", package: "SwiftScraper", condition: .when(platforms: [.macOS, .iOS])),
],
resources: [
.process("Resources/CompassCardDownload.js")
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "TangerineDownloader",
dependencies: [
.product(name: "SwiftScraper", package: "SwiftScraper", condition: .when(platforms: [.macOS, .iOS])),
],
resources: [
.process("Resources/TangerineDownload.js")
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.target(
name: "GoogleAuthentication",
dependencies: [
.product(name: "OAuthSwift", package: "OAuthSwift", condition: .when(platforms: [.macOS, .iOS])),
.product(name: "KeychainAccess", package: "KeychainAccess", condition: .when(platforms: [.macOS, .iOS]))
],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountCLITests",
dependencies: ["SwiftBeanCountCLI"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountModelTests",
dependencies: ["SwiftBeanCountModel"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountParserTests",
dependencies: ["SwiftBeanCountParser"],
resources: [.copy("Resource")],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountParserUtilsTests",
dependencies: ["SwiftBeanCountParserUtils"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountTaxTests",
dependencies: ["SwiftBeanCountTax"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountStatementsTests",
dependencies: ["SwiftBeanCountStatements"],
resources: [.copy("Resource")],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountRogersBankMapperTests",
dependencies: ["SwiftBeanCountRogersBankMapper"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountCompassCardMapperTests",
dependencies: ["SwiftBeanCountCompassCardMapper"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountTangerineMapperTests",
dependencies: ["SwiftBeanCountTangerineMapper"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountWealthsimpleMapperTests",
dependencies: ["SwiftBeanCountWealthsimpleMapper"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountSheetSyncTests",
dependencies: ["SwiftBeanCountSheetSync"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "SwiftBeanCountImporterTests",
dependencies: ["SwiftBeanCountImporter"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "RogersBankDownloaderTests",
dependencies: ["RogersBankDownloader"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "WealthsimpleDownloaderTests",
dependencies: ["WealthsimpleDownloader"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "CompassCardDownloaderTests",
dependencies: ["CompassCardDownloader"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "TangerineDownloaderTests",
dependencies: ["TangerineDownloader"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
.testTarget(
name: "GoogleAuthenticationTests",
dependencies: ["GoogleAuthentication"],
swiftSettings: swiftSettings,
plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
),
]
)