main
yml 641 lines 21.2 KB
Raw
1 name: Klepon
2 options:
3 deploymentTarget:
4 iOS: "18.5"
5 macOS: "15.0"
6 tvOS: "18.5"
7 visionOS: "1.0"
8 watchOS: "9.0"
9 xcodeVersion: "26.0"
10 generateEmptyDirectories: false
11 createIntermediateGroups: false
12
13 packages:
14 Ed:
15 url: https://github.com/ondeinference/ed-swift
16 exactVersion: 1.0.2
17 SnapshotTesting:
18 url: https://github.com/pointfreeco/swift-snapshot-testing
19 from: 1.19.2
20
21 schemes:
22 Klepon:
23 build:
24 targets:
25 Klepon: all
26 KleponSnapshotTests: [test]
27 test:
28 config: Debug
29 gatherCoverageData: true
30 coverageTargets:
31 - Klepon
32 targets:
33 - name: KleponSnapshotTests
34 run:
35 config: Debug
36 analyze:
37 config: Debug
38 archive:
39 config: Release
40 profile:
41 config: Release
42 Klepon Watch:
43 build:
44 targets:
45 Klepon Watch: all
46 run:
47 config: Debug
48 analyze:
49 config: Debug
50 archive:
51 config: Release
52 profile:
53 config: Release
54 Klepon Mac:
55 build:
56 targets:
57 Klepon Mac: all
58 run:
59 config: Debug
60 analyze:
61 config: Debug
62 archive:
63 config: Release
64 profile:
65 config: Release
66 Klepon TV:
67 build:
68 targets:
69 Klepon TV: all
70 run:
71 config: Debug
72 analyze:
73 config: Debug
74 archive:
75 config: Release
76 profile:
77 config: Release
78 Klepon Vision:
79 build:
80 targets:
81 Klepon Vision: all
82 run:
83 config: Debug
84 analyze:
85 config: Debug
86 archive:
87 config: Release
88 profile:
89 config: Release
90
91 targets:
92 Klepon:
93 type: application
94 platform: iOS
95 sources:
96 - path: Klepon
97 info:
98 path: Klepon/Info.plist
99 properties:
100 CFBundleShortVersionString: $(MARKETING_VERSION)
101 CFBundleVersion: $(CURRENT_PROJECT_VERSION)
102 ITSAppUsesNonExemptEncryption: false
103 OndeWebDevHost: $(ONDE_WEB_DEV_HOST)
104 OndeWebDevPort: $(ONDE_WEB_DEV_PORT)
105 OndeAppId: $(ONDE_APP_ID)
106 OndeAppSecret: $(ONDE_APP_SECRET)
107 UILaunchScreen: {}
108 UIApplicationSceneManifest:
109 UIApplicationSupportsMultipleScenes: false
110 UISceneConfigurations:
111 UIWindowSceneSessionRoleApplication:
112 - UISceneConfigurationName: Default Configuration
113 UISceneClassName: UIWindowScene
114 UISupportedInterfaceOrientations:
115 - UIInterfaceOrientationPortrait
116 UISupportedInterfaceOrientations~ipad:
117 - UIInterfaceOrientationPortrait
118 - UIInterfaceOrientationPortraitUpsideDown
119 - UIInterfaceOrientationLandscapeLeft
120 - UIInterfaceOrientationLandscapeRight
121 entitlements:
122 path: Klepon/Klepon.entitlements
123 properties:
124 com.apple.developer.kernel.increased-memory-limit: true
125 com.apple.security.application-groups:
126 - group.com.ondeinference.apps
127 configFiles:
128 Debug: Configs/Debug.xcconfig
129 Release: Configs/Release.xcconfig
130 dependencies:
131 - package: Ed
132 product: Ed
133 - target: Klepon Watch
134 preBuildScripts:
135 - name: Inject PrivacyInfo into EdFramework
136 shell: /bin/sh
137 basedOnDependencyAnalysis: false
138 showEnvVars: false
139 script: |
140 set -eu
141 # PrivacyInfo.xcprivacy is required inside every XCFramework slice.
142 # Apple's scanner does not accept the app-level manifest as a substitute
143 # for manifests inside nested third-party framework bundles.
144 # BUILD_DIR is .../DerivedData/<name>/Build/Intermediates.noindex
145 # SourcePackages is always two levels up from BUILD_DIR.
146 XCFW="${BUILD_DIR}/../../SourcePackages/artifacts/ed-swift/EdFramework/EdFramework.xcframework"
147 PRIVACY_SRC="${SRCROOT}/Scripts/OndePrivacyInfo.xcprivacy"
148 if [ ! -d "${XCFW}" ]; then
149 echo "warning: EdFramework.xcframework not found at ${XCFW} — skipping PrivacyInfo injection"
150 exit 0
151 fi
152 for SLICE in "${XCFW}"/*/; do
153 DEST="${SLICE}PrivacyInfo.xcprivacy"
154 if [ ! -f "${DEST}" ]; then
155 cp "${PRIVACY_SRC}" "${DEST}"
156 echo "Injected PrivacyInfo.xcprivacy into ${SLICE}"
157 fi
158 done
159 postBuildScripts:
160 - name: Update CFBundleVersion
161 shell: /bin/sh
162 basedOnDependencyAnalysis: false
163 showEnvVars: false
164 script: |
165 set -eu
166
167 SHARED_BUNDLE_VERSION_FILE="${BUILD_DIR}/klepon-cfbundleversion.txt"
168 if [ -f "${SHARED_BUNDLE_VERSION_FILE}" ]; then
169 BUNDLE_VERSION="$(cat "${SHARED_BUNDLE_VERSION_FILE}")"
170 else
171 BUNDLE_VERSION="$(date -u +"%Y%m%d.%H%M")"
172 printf '%s' "${BUNDLE_VERSION}" > "${SHARED_BUNDLE_VERSION_FILE}"
173 fi
174
175 INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
176
177 if [ ! -f "${INFO_PLIST}" ]; then
178 echo "error: Info.plist not found at ${INFO_PLIST}"
179 exit 1
180 fi
181
182 if ! /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUNDLE_VERSION}" "${INFO_PLIST}" >/dev/null 2>&1; then
183 /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string ${BUNDLE_VERSION}" "${INFO_PLIST}"
184 fi
185
186 echo "Updated CFBundleVersion to ${BUNDLE_VERSION}"
187 settings:
188 base:
189 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon
190 # Keep the module name stable across configurations so the tests can
191 # `@testable import Klepon` even though the Debug product is "Klepon Debug".
192 PRODUCT_MODULE_NAME: Klepon
193 MARKETING_VERSION: "1.1.0"
194 CURRENT_PROJECT_VERSION: 1
195 ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
196 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
197 DEAD_CODE_STRIPPING: YES
198 ENABLE_USER_SCRIPT_SANDBOXING: NO
199 TARGETED_DEVICE_FAMILY: "1,2"
200 "EXCLUDED_ARCHS[sdk=iphonesimulator*]": x86_64
201 configs:
202 Debug:
203 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon-Debug
204 PRODUCT_NAME: Klepon Debug
205 SWIFT_OPTIMIZATION_LEVEL: -Onone
206 Release:
207 SWIFT_OPTIMIZATION_LEVEL: -O
208
209 KleponSnapshotTests:
210 type: bundle.unit-test
211 platform: iOS
212 sources:
213 - path: KleponSnapshotTests
214 configFiles:
215 Debug: Configs/Signing.xcconfig
216 Release: Configs/Signing.xcconfig
217 dependencies:
218 - target: Klepon
219 - package: SnapshotTesting
220 product: SnapshotTesting
221 settings:
222 base:
223 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon.snapshot-tests
224 GENERATE_INFOPLIST_FILE: YES
225 ENABLE_USER_SCRIPT_SANDBOXING: NO
226 configs:
227 Debug:
228 SWIFT_OPTIMIZATION_LEVEL: -Onone
229 # The Debug host app is named "Klepon Debug", not the target name
230 # XcodeGen assumes when it derives TEST_HOST.
231 TEST_HOST: "$(BUILT_PRODUCTS_DIR)/Klepon Debug.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Klepon Debug"
232 Release:
233 SWIFT_OPTIMIZATION_LEVEL: -O
234
235 KleponMac:
236 name: Klepon Mac
237 type: application
238 platform: macOS
239 sources:
240 - path: Klepon
241 excludes:
242 - Info.plist
243 - Klepon.entitlements
244 info:
245 path: KleponMac/Info.plist
246 properties:
247 CFBundleShortVersionString: $(MARKETING_VERSION)
248 CFBundleVersion: $(CURRENT_PROJECT_VERSION)
249 ITSAppUsesNonExemptEncryption: false
250 LSApplicationCategoryType: public.app-category.food-and-drink
251 OndeAppId: $(ONDE_APP_ID)
252 OndeAppSecret: $(ONDE_APP_SECRET)
253 entitlements:
254 path: KleponMac/KleponMac.entitlements
255 properties:
256 com.apple.security.app-sandbox: true
257 com.apple.security.network.client: true
258 com.apple.security.application-groups:
259 - group.com.ondeinference.apps
260 com.apple.developer.kernel.increased-memory-limit: true
261 configFiles:
262 Debug: Configs/Signing.xcconfig
263 Release: Configs/Signing.xcconfig
264 dependencies:
265 - package: Ed
266 product: Ed
267 # SystemConfiguration is a genuine transitive dependency of the Onde Rust
268 # static library (reqwest → native-tls → SCDynamicStore / SCNetworkInterface).
269 # It is required by the macOS linker to resolve symbols in libonde-macos.a
270 # and is NOT present in the iOS/tvOS/watchOS slices.
271 - sdk: SystemConfiguration.framework
272 preBuildScripts:
273 - name: Inject PrivacyInfo into EdFramework
274 shell: /bin/sh
275 basedOnDependencyAnalysis: false
276 showEnvVars: false
277 script: |
278 set -eu
279 XCFW="${BUILD_DIR}/../../SourcePackages/artifacts/ed-swift/EdFramework/EdFramework.xcframework"
280 PRIVACY_SRC="${SRCROOT}/Scripts/OndePrivacyInfo.xcprivacy"
281 if [ ! -d "${XCFW}" ]; then
282 echo "warning: EdFramework.xcframework not found at ${XCFW} — skipping PrivacyInfo injection"
283 exit 0
284 fi
285 for SLICE in "${XCFW}"/*/; do
286 DEST="${SLICE}PrivacyInfo.xcprivacy"
287 if [ ! -f "${DEST}" ]; then
288 cp "${PRIVACY_SRC}" "${DEST}"
289 echo "Injected PrivacyInfo.xcprivacy into ${SLICE}"
290 fi
291 done
292 postBuildScripts:
293 - name: Update CFBundleVersion
294 shell: /bin/sh
295 basedOnDependencyAnalysis: false
296 showEnvVars: false
297 script: |
298 set -eu
299
300 SHARED_BUNDLE_VERSION_FILE="${BUILD_DIR}/klepon-cfbundleversion.txt"
301 if [ -f "${SHARED_BUNDLE_VERSION_FILE}" ]; then
302 BUNDLE_VERSION="$(cat "${SHARED_BUNDLE_VERSION_FILE}")"
303 else
304 BUNDLE_VERSION="$(date -u +"%Y%m%d.%H%M")"
305 printf '%s' "${BUNDLE_VERSION}" > "${SHARED_BUNDLE_VERSION_FILE}"
306 fi
307
308 INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
309
310 if [ ! -f "${INFO_PLIST}" ]; then
311 echo "error: Info.plist not found at ${INFO_PLIST}"
312 exit 1
313 fi
314
315 if ! /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUNDLE_VERSION}" "${INFO_PLIST}" >/dev/null 2>&1; then
316 /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string ${BUNDLE_VERSION}" "${INFO_PLIST}"
317 fi
318
319 echo "Updated CFBundleVersion to ${BUNDLE_VERSION}"
320 settings:
321 base:
322 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon
323 PRODUCT_NAME: Klepon
324 MARKETING_VERSION: "1.1.0"
325 CURRENT_PROJECT_VERSION: 1
326 DEAD_CODE_STRIPPING: YES
327 ENABLE_USER_SCRIPT_SANDBOXING: NO
328 ASSETCATALOG_COMPILER_APPICON_NAME: AppIconMac
329 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
330 INFOPLIST_KEY_NSHumanReadableCopyright: "Copyright © 2026 Splitfire AB (Onde Inference)"
331 "EXCLUDED_ARCHS[sdk=macosx*]": x86_64
332 configs:
333 Debug:
334 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon-Debug
335 PRODUCT_NAME: Klepon Debug
336 SWIFT_OPTIMIZATION_LEVEL: -Onone
337 Release:
338 SWIFT_OPTIMIZATION_LEVEL: -O
339
340 KleponTV:
341 name: Klepon TV
342 type: application
343 platform: tvOS
344 sources:
345 - path: Klepon
346 excludes:
347 - Info.plist
348 - Klepon.entitlements
349 - App/KleponApp.swift
350 - App/AppRootView.swift
351 - path: KleponTV/App
352 info:
353 path: KleponTV/Info.plist
354 properties:
355 CFBundleShortVersionString: $(MARKETING_VERSION)
356 CFBundleVersion: $(CURRENT_PROJECT_VERSION)
357 ITSAppUsesNonExemptEncryption: false
358 UILaunchScreen: {}
359 OndeAppId: $(ONDE_APP_ID)
360 OndeAppSecret: $(ONDE_APP_SECRET)
361 CFBundleURLTypes:
362 - CFBundleURLName: ai.splitfire.klepon.tvos
363 CFBundleURLSchemes:
364 - klepon
365 UIApplicationSceneManifest:
366 UIApplicationSupportsMultipleScenes: false
367 UISceneConfigurations:
368 UIWindowSceneSessionRoleApplication:
369 - UISceneConfigurationName: Default Configuration
370 UISceneDelegateClassName: $(PRODUCT_MODULE_NAME).SceneDelegate
371 entitlements:
372 path: KleponTV/KleponTV.entitlements
373 properties:
374 com.apple.developer.kernel.increased-memory-limit: true
375 com.apple.security.application-groups:
376 - group.com.ondeinference.apps
377 configFiles:
378 Debug: Configs/Signing.xcconfig
379 Release: Configs/Signing.xcconfig
380 dependencies:
381 - package: Ed
382 product: Ed
383 - target: Klepon TV Top Shelf
384 embed: true
385 postBuildScripts:
386 - name: Update CFBundleVersion
387 shell: /bin/sh
388 basedOnDependencyAnalysis: false
389 showEnvVars: false
390 script: |
391 set -eu
392
393 SHARED_BUNDLE_VERSION_FILE="${BUILD_DIR}/klepon-cfbundleversion.txt"
394 if [ -f "${SHARED_BUNDLE_VERSION_FILE}" ]; then
395 BUNDLE_VERSION="$(cat "${SHARED_BUNDLE_VERSION_FILE}")"
396 else
397 BUNDLE_VERSION="$(date -u +"%Y%m%d.%H%M")"
398 printf '%s' "${BUNDLE_VERSION}" > "${SHARED_BUNDLE_VERSION_FILE}"
399 fi
400
401 INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
402
403 if [ ! -f "${INFO_PLIST}" ]; then
404 echo "error: Info.plist not found at ${INFO_PLIST}"
405 exit 1
406 fi
407
408 if ! /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUNDLE_VERSION}" "${INFO_PLIST}" >/dev/null 2>&1; then
409 /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string ${BUNDLE_VERSION}" "${INFO_PLIST}"
410 fi
411
412 echo "Updated CFBundleVersion to ${BUNDLE_VERSION}"
413 settings:
414 base:
415 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon
416 PRODUCT_NAME: Klepon
417 MARKETING_VERSION: "1.1.0"
418 CURRENT_PROJECT_VERSION: 1
419 ASSETCATALOG_COMPILER_APPICON_NAME: AppIconTV
420 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
421 ENABLE_USER_SCRIPT_SANDBOXING: NO
422 TARGETED_DEVICE_FAMILY: 3
423 "EXCLUDED_ARCHS[sdk=appletvsimulator*]": x86_64
424 configs:
425 Debug:
426 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon-Debug
427 PRODUCT_NAME: Klepon Debug
428 SWIFT_OPTIMIZATION_LEVEL: -Onone
429 Release:
430 SWIFT_OPTIMIZATION_LEVEL: -O
431
432 KleponTVTopShelfExtension:
433 name: Klepon TV Top Shelf
434 type: app-extension
435 platform: tvOS
436 sources:
437 - path: KleponTVTopShelfExtension
438 excludes:
439 - Info.plist
440 info:
441 path: KleponTVTopShelfExtension/Info.plist
442 properties:
443 CFBundleShortVersionString: $(MARKETING_VERSION)
444 CFBundleVersion: $(CURRENT_PROJECT_VERSION)
445 CFBundleDisplayName: Klepon TV Top Shelf
446 UIRequiredDeviceCapabilities:
447 - arm64
448 NSExtension:
449 NSExtensionPointIdentifier: com.apple.tv-top-shelf
450 NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).ContentProvider
451 configFiles:
452 Debug: Configs/Signing.xcconfig
453 Release: Configs/Signing.xcconfig
454 postBuildScripts:
455 - name: Update CFBundleVersion
456 shell: /bin/sh
457 basedOnDependencyAnalysis: false
458 showEnvVars: false
459 script: |
460 set -eu
461
462 SHARED_BUNDLE_VERSION_FILE="${BUILD_DIR}/klepon-cfbundleversion.txt"
463 if [ -f "${SHARED_BUNDLE_VERSION_FILE}" ]; then
464 BUNDLE_VERSION="$(cat "${SHARED_BUNDLE_VERSION_FILE}")"
465 else
466 BUNDLE_VERSION="$(date -u +"%Y%m%d.%H%M")"
467 printf '%s' "${BUNDLE_VERSION}" > "${SHARED_BUNDLE_VERSION_FILE}"
468 fi
469
470 INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
471
472 if [ ! -f "${INFO_PLIST}" ]; then
473 echo "error: Info.plist not found at ${INFO_PLIST}"
474 exit 1
475 fi
476
477 if ! /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUNDLE_VERSION}" "${INFO_PLIST}" >/dev/null 2>&1; then
478 /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string ${BUNDLE_VERSION}" "${INFO_PLIST}"
479 fi
480
481 echo "Updated CFBundleVersion to ${BUNDLE_VERSION}"
482 settings:
483 base:
484 APPLICATION_EXTENSION_API_ONLY: YES
485 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon.topshelf
486 PRODUCT_NAME: Klepon TV Top Shelf
487 MARKETING_VERSION: "1.1.0"
488 CURRENT_PROJECT_VERSION: 1
489 ENABLE_USER_SCRIPT_SANDBOXING: NO
490 TARGETED_DEVICE_FAMILY: 3
491 configs:
492 Debug:
493 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon-Debug.topshelf
494 SWIFT_OPTIMIZATION_LEVEL: -Onone
495 Release:
496 SWIFT_OPTIMIZATION_LEVEL: -O
497
498 KleponVision:
499 name: Klepon Vision
500 type: application
501 platform: visionOS
502 sources:
503 - path: Klepon
504 excludes:
505 - Info.plist
506 - Klepon.entitlements
507 info:
508 path: KleponVision/Info.plist
509 properties:
510 CFBundleShortVersionString: $(MARKETING_VERSION)
511 CFBundleVersion: $(CURRENT_PROJECT_VERSION)
512 ITSAppUsesNonExemptEncryption: false
513 UILaunchScreen: {}
514 OndeAppId: $(ONDE_APP_ID)
515 OndeAppSecret: $(ONDE_APP_SECRET)
516 entitlements:
517 path: KleponVision/KleponVision.entitlements
518 properties:
519 com.apple.security.application-groups:
520 - group.com.ondeinference.apps
521 configFiles:
522 Debug: Configs/Signing.xcconfig
523 Release: Configs/Signing.xcconfig
524 dependencies:
525 - package: Ed
526 product: Ed
527 postBuildScripts:
528 - name: Update CFBundleVersion
529 shell: /bin/sh
530 basedOnDependencyAnalysis: false
531 showEnvVars: false
532 script: |
533 set -eu
534
535 SHARED_BUNDLE_VERSION_FILE="${BUILD_DIR}/klepon-cfbundleversion.txt"
536 if [ -f "${SHARED_BUNDLE_VERSION_FILE}" ]; then
537 BUNDLE_VERSION="$(cat "${SHARED_BUNDLE_VERSION_FILE}")"
538 else
539 BUNDLE_VERSION="$(date -u +"%Y%m%d.%H%M")"
540 printf '%s' "${BUNDLE_VERSION}" > "${SHARED_BUNDLE_VERSION_FILE}"
541 fi
542
543 INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
544
545 if [ ! -f "${INFO_PLIST}" ]; then
546 echo "error: Info.plist not found at ${INFO_PLIST}"
547 exit 1
548 fi
549
550 if ! /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUNDLE_VERSION}" "${INFO_PLIST}" >/dev/null 2>&1; then
551 /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string ${BUNDLE_VERSION}" "${INFO_PLIST}"
552 fi
553
554 echo "Updated CFBundleVersion to ${BUNDLE_VERSION}"
555 settings:
556 base:
557 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon
558 PRODUCT_NAME: Klepon
559 MARKETING_VERSION: "1.1.0"
560 CURRENT_PROJECT_VERSION: 1
561 TARGETED_DEVICE_FAMILY: 7
562 ASSETCATALOG_COMPILER_APPICON_NAME: AppIconVision
563 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
564 ENABLE_USER_SCRIPT_SANDBOXING: NO
565 "EXCLUDED_ARCHS[sdk=xrsimulator*]": x86_64
566 configs:
567 Debug:
568 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon-Debug
569 PRODUCT_NAME: Klepon Debug
570 SWIFT_OPTIMIZATION_LEVEL: -Onone
571 Release:
572 SWIFT_OPTIMIZATION_LEVEL: -O
573
574 KleponWatch:
575 name: Klepon Watch
576 type: application
577 platform: watchOS
578 sources:
579 - path: KleponWatch
580 - path: Klepon/Domain/GuideEntry.swift
581 - path: Klepon/DesignSystem/KleponColor.swift
582 - path: Klepon/Resources/Content
583 buildPhase: resources
584 configFiles:
585 Debug: Configs/Signing.xcconfig
586 Release: Configs/Signing.xcconfig
587 postBuildScripts:
588 - name: Update CFBundleVersion
589 shell: /bin/sh
590 basedOnDependencyAnalysis: false
591 showEnvVars: false
592 script: |
593 set -eu
594
595 SHARED_BUNDLE_VERSION_FILE="${BUILD_DIR}/klepon-cfbundleversion.txt"
596 if [ -f "${SHARED_BUNDLE_VERSION_FILE}" ]; then
597 BUNDLE_VERSION="$(cat "${SHARED_BUNDLE_VERSION_FILE}")"
598 else
599 BUNDLE_VERSION="$(date -u +"%Y%m%d.%H%M")"
600 printf '%s' "${BUNDLE_VERSION}" > "${SHARED_BUNDLE_VERSION_FILE}"
601 fi
602
603 INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
604
605 if [ ! -f "${INFO_PLIST}" ]; then
606 echo "error: Info.plist not found at ${INFO_PLIST}"
607 exit 1
608 fi
609
610 if ! /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUNDLE_VERSION}" "${INFO_PLIST}" >/dev/null 2>&1; then
611 /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string ${BUNDLE_VERSION}" "${INFO_PLIST}"
612 fi
613
614 echo "Updated CFBundleVersion to ${BUNDLE_VERSION}"
615 settings:
616 base:
617 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon.watchkitapp
618 KLEPON_COMPANION_BUNDLE_ID: ai.splitfire.klepon
619 PRODUCT_NAME: Klepon Watch
620 MARKETING_VERSION: "1.1.0"
621 CURRENT_PROJECT_VERSION: 1
622 GENERATE_INFOPLIST_FILE: NO
623 INFOPLIST_FILE: KleponWatch/Info.plist
624 ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
625 ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
626 ENABLE_USER_SCRIPT_SANDBOXING: NO
627 SDKROOT: watchos
628 TARGETED_DEVICE_FAMILY: 4
629 SKIP_INSTALL: YES
630 LD_RUNPATH_SEARCH_PATHS:
631 - "$(inherited)"
632 - "@executable_path/Frameworks"
633 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: YES
634 "EXCLUDED_ARCHS[sdk=watchsimulator*]": x86_64
635 configs:
636 Debug:
637 PRODUCT_BUNDLE_IDENTIFIER: ai.splitfire.klepon-Debug.watchkitapp
638 KLEPON_COMPANION_BUNDLE_ID: ai.splitfire.klepon-Debug
639 SWIFT_OPTIMIZATION_LEVEL: -Onone
640 Release:
641 SWIFT_OPTIMIZATION_LEVEL: -O