Repository navigation
Expand file tree
/
Copy pathproject.yml
More file actions
182 lines (171 loc) · 5.35 KB
/
Copy pathproject.yml
File metadata and controls
182 lines (171 loc) · 5.35 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
# NetRelish.xcodeproj is GENERATED from this file by XcodeGen:
#
# scripts/gen-project.sh
#
# Edit here, regenerate, commit both. CI fails if the committed project differs.
name: NetRelish
options:
bundleIdPrefix: com.shepdesign
deploymentTarget:
macOS: "27.0"
xcodeVersion: "27.0"
createIntermediateGroups: true
generateEmptyDirectories: false
groupSortPosition: top
# Two product flavors × debug/release. AppStore is StoreKit; Direct defines DIRECT_BUILD
# (Developer ID, Pickle, direct license). Debug variants carry DEBUG for the Design Kit.
configs:
Debug-AppStore: debug
Debug-Direct: debug
Release-AppStore: release
Release-Direct: release
configFiles:
Debug-AppStore: Config/AppStore.xcconfig
Release-AppStore: Config/AppStore.xcconfig
Debug-Direct: Config/Direct.xcconfig
Release-Direct: Config/Direct.xcconfig
settings:
base:
SWIFT_VERSION: "6.0"
SWIFT_STRICT_CONCURRENCY: complete
DEVELOPMENT_TEAM: D9QDJ44773
CODE_SIGN_STYLE: Automatic
MARKETING_VERSION: "0.1.0"
CURRENT_PROJECT_VERSION: "1"
ENABLE_USER_SCRIPT_SANDBOXING: YES
configs:
Debug-AppStore:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEBUG
Debug-Direct:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DEBUG DIRECT_BUILD
Release-AppStore:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: ""
Release-Direct:
SWIFT_ACTIVE_COMPILATION_CONDITIONS: DIRECT_BUILD
packages:
GRDB:
url: https://github.com/groue/GRDB.swift
from: "7.0.0"
KeyboardShortcuts:
url: https://github.com/sindresorhus/KeyboardShortcuts
from: "3.1.0"
targets:
# The Pantry: models, migrations, store, intelligence, intents. GRDB lives here.
Pantry:
type: framework
platform: macOS
sources:
- path: Sources/Pantry
dependencies:
- package: GRDB
- sdk: AppIntents.framework
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.shepdesign.netrelish.pantry
SKIP_INSTALL: YES
GENERATE_INFOPLIST_FILE: YES
# The app. Sources/UI (tokens, symbols, shapes, Design Kit) is folded in here.
NetRelish:
type: application
platform: macOS
sources:
- path: Sources/App
- path: Sources/UI
- path: Sources/Shelf
- path: Sources/Bench
- path: Sources/Vault
- path: Resources
buildPhase: resources # AppIcon.icns and defuddle.js land in Contents/Resources
dependencies:
- target: Pantry
- package: KeyboardShortcuts
entitlements:
path: NetRelish.entitlements
properties:
com.apple.security.app-sandbox: true
com.apple.security.network.client: true
com.apple.security.files.user-selected.read-write: true
# "Import from my card" reads the Contacts Me card once (ADR 0006).
com.apple.security.personal-information.addressbook: true
info:
path: Sources/App/Info.plist
properties:
CFBundleName: NetRelish
CFBundleDisplayName: NetRelish
CFBundleIconFile: AppIcon
LSMinimumSystemVersion: "27.0"
LSApplicationCategoryType: public.app-category.productivity
NSHumanReadableCopyright: "© 2026 Shepdesign LLC. Code MIT; the mark and the name are all rights reserved."
NSPrincipalClass: NSApplication
NSHighResolutionCapable: true
NSContactsUsageDescription: "NetRelish copies your Contacts card into your Keychain once, so it can fill forms when you ask. It never reads Contacts again."
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.shepdesign.netrelish
PRODUCT_NAME: NetRelish
ENABLE_HARDENED_RUNTIME: YES
ENABLE_APP_SANDBOX: YES
COMBINE_HIDPI_IMAGES: YES
ASSETCATALOG_COMPILER_APPICON_NAME: ""
# Hosted by the app: tokens, symbols, shapes — everything that needs the module.
NetRelishTests:
type: bundle.unit-test
platform: macOS
sources:
- path: Tests/NetRelishTests
dependencies:
- target: NetRelish
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.shepdesign.netrelish.tests
GENERATE_INFOPLIST_FILE: YES
# Unhosted: the Pantry against an in-memory database.
PantryTests:
type: bundle.unit-test
platform: macOS
sources:
- path: Tests/PantryTests
dependencies:
- target: Pantry
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.shepdesign.netrelish.pantrytests
GENERATE_INFOPLIST_FILE: YES
# Unhosted: runs scripts/gen-*.swift as processes, which the sandboxed app host cannot.
GeneratorTests:
type: bundle.unit-test
platform: macOS
sources:
- path: Tests/GeneratorTests
excludes: ["Fixtures/**"] # read by path in tests, not bundled
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.shepdesign.netrelish.generatortests
GENERATE_INFOPLIST_FILE: YES
schemes:
NetRelish (App Store):
build:
targets:
NetRelish: all
run:
config: Debug-AppStore
test:
config: Debug-AppStore
targets: [NetRelishTests, PantryTests, GeneratorTests]
profile:
config: Release-AppStore
archive:
config: Release-AppStore
NetRelish (Direct):
build:
targets:
NetRelish: all
run:
config: Debug-Direct
test:
config: Debug-Direct
targets: [NetRelishTests, PantryTests, GeneratorTests]
profile:
config: Release-Direct
archive:
config: Release-Direct