-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathproject.yml
More file actions
142 lines (135 loc) · 4.79 KB
/
Copy pathproject.yml
File metadata and controls
142 lines (135 loc) · 4.79 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
name: LockIME
options:
bundleIdPrefix: com.oomol
deploymentTarget:
macOS: "14.0"
developmentLanguage: en
knownRegions: [en, zh-Hans, zh-Hant, ja, fr, de, es, pt, ru]
createIntermediateGroups: true
groupSortPosition: top
generateEmptyDirectories: true
settings:
base:
SWIFT_VERSION: "6.0"
# Floor chosen by audit, not aspiration: the highest dependency minimum is
# PermissionFlow (13.0) and our own code bottoms out at @Observable (14.0)
# — going below 14 would mean rewriting the observation layer. Newer-OS
# API survives only behind #available with a fallback (26: glass button
# styles; 15: the settings Tab builder); the compiler enforces the rest.
# macOS 26 keeps the full Tahoe look — Liquid Glass comes from the system
# rendering standard controls.
MACOSX_DEPLOYMENT_TARGET: "14.0"
SWIFT_STRICT_CONCURRENCY: complete
DEAD_CODE_STRIPPING: YES
GCC_WARN_UNINITIALIZED_AUTOS: YES
CLANG_WARN_DOCUMENTATION_COMMENTS: NO
# Local builds are always 0.0.0-development; CI overrides both values at
# archive time (version from git tags, build number date-stamped — see
# .github/workflows/build-publish.yml and scripts/ci/compute_version.sh).
MARKETING_VERSION: "0.0.0-development"
CURRENT_PROJECT_VERSION: "1"
ONLY_ACTIVE_ARCH: YES
# Single-arch by design — we ship one app per architecture, never a
# universal binary (download size). Local default is arm64; CI overrides
# per pass (`ARCHS=x86_64 ONLY_ACTIVE_ARCH=NO`, see build-publish.yml),
# and `make build ARCH=x86_64` does the same locally.
ARCHS: arm64
packages:
Sparkle:
url: https://github.com/sparkle-project/Sparkle.git
from: "2.9.0"
KeyboardShortcuts:
url: https://github.com/sindresorhus/KeyboardShortcuts.git
from: "1.10.0"
PermissionFlow:
url: https://github.com/jaywcjlove/PermissionFlow.git
from: "2.5.0"
targets:
LockIMEKit:
type: library.static
platform: macOS
sources:
- path: Sources/LockIMEKit
settings:
base:
PRODUCT_NAME: LockIMEKit
PRODUCT_BUNDLE_IDENTIFIER: com.oomol.LockIME.Kit
DEFINES_MODULE: YES
SKIP_INSTALL: YES
LockIME:
type: application
platform: macOS
sources:
- path: Sources/LockIME
dependencies:
- target: LockIMEKit
- package: Sparkle
- package: KeyboardShortcuts
- package: PermissionFlow
settings:
base:
PRODUCT_NAME: LockIME
PRODUCT_MODULE_NAME: LockIME
PRODUCT_BUNDLE_IDENTIFIER: com.oomol.LockIME
LOCKIME_BUNDLE_DISPLAY_NAME: LockIME
# URL-scheme API. Release registers `lockime://`; Debug uses a distinct
# `lockime-dev://` (overridden below) so a local dev build never hijacks
# the installed release's scheme. The handler is scheme-agnostic.
LOCKIME_URL_SCHEME: lockime
INFOPLIST_FILE: Sources/LockIME/Info.plist
CODE_SIGN_ENTITLEMENTS: Sources/LockIME/LockIME.entitlements
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
CODE_SIGN_STYLE: Manual
COMBINE_HIDPI_IMAGES: YES
ENABLE_HARDENED_RUNTIME: YES
LD_RUNPATH_SEARCH_PATHS: "$(inherited) @executable_path/../Frameworks"
configs:
Debug:
PRODUCT_NAME: LockIME Dev
PRODUCT_BUNDLE_IDENTIFIER: com.oomol.LockIME.dev
LOCKIME_BUNDLE_DISPLAY_NAME: LockIME Dev
LOCKIME_URL_SCHEME: lockime-dev
CODE_SIGN_IDENTITY: "-"
DEVELOPMENT_TEAM: ""
ENABLE_HARDENED_RUNTIME: NO
Release:
CODE_SIGN_IDENTITY: "Developer ID Application"
DEVELOPMENT_TEAM: PWJ9VF7HHT
postBuildScripts:
# Sparkle ships as a fat (arm64 + x86_64) xcframework; since we ship
# single-arch apps, strip the unused slice and re-sign (saves ~1.4 MB).
- name: Thin embedded frameworks to ARCHS
script: '"$PROJECT_DIR/scripts/thin-embedded-frameworks.sh"'
basedOnDependencyAnalysis: false
LockIMETests:
type: bundle.unit-test
platform: macOS
sources:
- path: Tests/LockIMEKitTests
dependencies:
- target: LockIMEKit
# Embeds KeyboardShortcuts_KeyboardShortcuts.bundle in the test bundle so
# LocalizationGuardTests can pin its name and per-language lproj coverage.
- package: KeyboardShortcuts
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.oomol.LockIME.Tests
GENERATE_INFOPLIST_FILE: YES
CODE_SIGN_IDENTITY: "-"
CODE_SIGN_STYLE: Manual
schemes:
LockIME:
build:
targets:
LockIME: all
LockIMETests: [test]
run:
config: Debug
test:
config: Debug
gatherCoverageData: true
targets:
- LockIMETests
archive:
config: Release