-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProject.swift
More file actions
89 lines (88 loc) · 4.05 KB
/
Copy pathProject.swift
File metadata and controls
89 lines (88 loc) · 4.05 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
import ProjectDescription
import ProjectDescriptionHelpers
let project = Project(
name: "Mooligan",
options: .options(automaticSchemesOptions: .disabled),
settings: Module.settings,
targets: [
.target(
name: "Mooligan",
destinations: Module.destinations,
product: .app,
// Lowercase — this is the identifier registered in App Store Connect.
bundleId: "com.missingems.mooligan",
deploymentTargets: Module.deploymentTargets,
infoPlist: .extendingDefault(
with: [
// Modern launch screen (deployment target is iOS 27) — an empty dict
// is the plain default screen and satisfies the iPad-multitasking
// requirement without shipping a storyboard.
"UILaunchScreen": .dictionary([:]),
"NSCameraUsageDescription": .string("We need camera access to scan your cards."),
"BGTaskSchedulerPermittedIdentifiers": .array(["com.missingems.mooligan.bulkSync"]),
"UIBackgroundModes": .array(["processing"]),
// Version and build both come from build settings so CI can stamp
// them on the `xcodebuild` command line without touching the plist.
"CFBundleShortVersionString": "$(MARKETING_VERSION)",
"CFBundleVersion": "$(CURRENT_PROJECT_VERSION)",
// Base URL of the MTGGraphQL proxy (Tools/mtggraphql-proxy). Not a
// secret: the proxy holds the access token server-side and only
// forwards its allow-listed price-history and purchase-link
// operations, so a leaked URL grants nothing the app doesn't already
// expose. Empty would just hide the price-history section
// (MTGGraphQLEndpoint.fromBundle).
"MTGGraphQLProxyURL": .string("https://mtggraphql-proxy.mooligan.workers.dev"),
// The only encryption is Apple's own (HTTPS through URLSession), which is exempt, so App
// Store Connect stops asking about export compliance on every upload.
"ITSAppUsesNonExemptEncryption": .boolean(false),
]
),
sources: ["Mooligan/Sources/**"],
resources: ["Mooligan/Resources/**"],
dependencies: [
.project(target: "Query", path: .relativeToManifest("Features/Query")),
.project(target: "Browse", path: .relativeToManifest("Features/Browse")),
.project(target: "CardDetail", path: .relativeToManifest("Features/CardDetail")),
.project(target: "CardScanner", path: .relativeToManifest("Features/CardScanner")),
.project(target: "PackOpening", path: .relativeToManifest("Features/PackOpening")),
.project(target: "DesignComponents", path: .relativeToManifest("Core/DesignComponents")),
.project(target: "Networking", path: .relativeToManifest("Core/Networking")),
.external(name: "ComposableArchitecture"),
.external(name: "ScryfallKit"),
],
settings: .settings(base: Module.appVersioning)
),
.target(
name: "MooliganTests",
destinations: Module.destinations,
product: .unitTests,
bundleId: "com.missingems.mooligan.MooliganTests",
deploymentTargets: Module.deploymentTargets,
infoPlist: .default,
sources: ["Mooligan/Tests/**"],
resources: [],
dependencies: [
.target(name: "Mooligan"),
.project(target: "Networking", path: .relativeToManifest("Core/Networking")),
.project(target: "Browse", path: .relativeToManifest("Features/Browse")),
.external(name: "ComposableArchitecture"),
],
settings: Module.testSettings
),
// Drives the built app through XCUITest. A `.uiTests` bundle: needs the app
// installed on a booted simulator, so it is the slow part of `tuist test`.
.target(
name: "MooliganUITests",
destinations: Module.destinations,
product: .uiTests,
bundleId: "com.missingems.mooligan.MooliganUITests",
deploymentTargets: Module.deploymentTargets,
infoPlist: .default,
sources: ["Mooligan/UITests/**"],
resources: [],
dependencies: [
.target(name: "Mooligan"),
]
),
]
)