149 lines
5.9 KiB
YAML
149 lines
5.9 KiB
YAML
name: TVAnarchy
|
|
options:
|
|
bundleIdPrefix: local.lilith
|
|
createIntermediateGroups: true
|
|
deploymentTarget:
|
|
macOS: "14.0"
|
|
iOS: "17.0"
|
|
packages:
|
|
VLCKit:
|
|
url: https://github.com/tylerjonesio/vlckit-spm
|
|
exactVersion: 3.6.0
|
|
# Reuse the shared Lilith dark-first design system (dependency-free tokens).
|
|
# Absolute path: stable from both this worktree and main on this machine.
|
|
LilithDesignTokens:
|
|
path: /Users/natalie/Code/@packages/@swift/@ui/tokens
|
|
settings:
|
|
base:
|
|
SWIFT_VERSION: "5.0" # Swift 6.2 compiler, language mode 5 (relaxed concurrency)
|
|
MACOSX_DEPLOYMENT_TARGET: "14.0"
|
|
# Compile-time opt-in for the built-in adult feature. Present here → the
|
|
# Adult tab, the native PornService, and the adult browse/gating surfaces are
|
|
# compiled in. Drop this flag (or build a target without it) for a clean
|
|
# build with no adult surfaces at all — the defensive bits that keep porn OUT
|
|
# of the Home/queue (`isAdult`, QueueStore stripping, the default category
|
|
# exclude) stay unconditional, so a flag-off build never leaks adult content;
|
|
# it simply offers no way to browse it. Applies to all targets.
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS: ENABLE_ADULT
|
|
MARKETING_VERSION: "1.1.0" # human version — bump here on a feature milestone.
|
|
# The build number (CFBundleVersion) + git SHA + build
|
|
# time are stamped onto the built Info.plist by the app
|
|
# target's always-run "Stamp version" phase below.
|
|
CODE_SIGNING_ALLOWED: "NO" # local dev, unsigned
|
|
CODE_SIGNING_REQUIRED: "NO"
|
|
ENABLE_HARDENED_RUNTIME: "NO" # needs Process/ssh + localhost+overlay network, no sandbox
|
|
targets:
|
|
TVAnarchyCore:
|
|
type: framework
|
|
platform: macOS
|
|
sources: [Sources/TVAnarchyCore]
|
|
dependencies:
|
|
- sdk: MediaPlayer.framework # system transport + Now Playing (NowPlayingController)
|
|
- sdk: Security.framework # Keychain for VPN provider logins (VPNCredentialStore)
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyCore
|
|
GENERATE_INFOPLIST_FILE: "YES"
|
|
TVAnarchy:
|
|
type: application
|
|
platform: macOS
|
|
sources: [Sources/TVAnarchy]
|
|
dependencies:
|
|
- target: TVAnarchyCore
|
|
info:
|
|
path: Sources/TVAnarchy/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: TVAnarchy
|
|
# XcodeGen regenerates this Info.plist from these properties on every
|
|
# `xcodegen generate`, so the version MUST live here (a hand-edit to the
|
|
# plist gets clobbered). `$(MARKETING_VERSION)` resolves at build time.
|
|
CFBundleShortVersionString: "$(MARKETING_VERSION)"
|
|
LSMinimumSystemVersion: "14.0"
|
|
LSApplicationCategoryType: public.app-category.video
|
|
NSAppTransportSecurity:
|
|
NSAllowsLocalNetworking: true # talk to VLC on 127.0.0.1 over http
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchy
|
|
GENERATE_INFOPLIST_FILE: "NO"
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon # Sources/TVAnarchy/Assets.xcassets
|
|
# The human version (CFBundleShortVersionString) comes from MARKETING_VERSION
|
|
# via info.properties above — reliable. The dynamic git SHA / build time live
|
|
# in a generated Swift constant (Sources/TVAnarchyCore/BuildStamp.swift,
|
|
# gitignored) written by tools/stamp-build.sh, which build-install.sh runs
|
|
# BEFORE `xcodegen generate`. A compiled constant can't be lost the way a
|
|
# post-build Info.plist edit was (TARGET_BUILD_DIR there pointed at an
|
|
# intermediate, so the stamp never reached the copied app plist).
|
|
TVAnarchyiOS:
|
|
type: application
|
|
platform: iOS
|
|
sources: [Sources/TVAnarchyiOS]
|
|
dependencies:
|
|
- package: VLCKit
|
|
product: VLCKitSPM # SPM product; the iOS slice's module is `MobileVLCKit`
|
|
- package: LilithDesignTokens
|
|
product: LilithDesignTokens
|
|
info:
|
|
path: Sources/TVAnarchyiOS/Info.plist
|
|
properties:
|
|
CFBundleDisplayName: TVAnarchy
|
|
UILaunchScreen: {}
|
|
UISupportedInterfaceOrientations:
|
|
- UIInterfaceOrientationPortrait
|
|
- UIInterfaceOrientationLandscapeLeft
|
|
- UIInterfaceOrientationLandscapeRight
|
|
# The bridge is plain HTTP over localhost (plum) / the WireGuard mesh
|
|
# (black) — never the open internet — so arbitrary loads are allowed.
|
|
NSAppTransportSecurity:
|
|
NSAllowsArbitraryLoads: true
|
|
NSLocalNetworkUsageDescription: Connect to your media bridge on the local network.
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyiOS
|
|
GENERATE_INFOPLIST_FILE: "NO"
|
|
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
|
|
TARGETED_DEVICE_FAMILY: "1,2"
|
|
IPHONEOS_DEPLOYMENT_TARGET: "17.0"
|
|
CODE_SIGNING_ALLOWED: "NO"
|
|
CODE_SIGNING_REQUIRED: "NO"
|
|
TVAnarchyiOSUITests:
|
|
type: bundle.ui-testing
|
|
platform: iOS
|
|
sources: [Tests/TVAnarchyiOSUITests]
|
|
dependencies:
|
|
- target: TVAnarchyiOS
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyiOSUITests
|
|
GENERATE_INFOPLIST_FILE: "YES"
|
|
TEST_TARGET_NAME: TVAnarchyiOS
|
|
IPHONEOS_DEPLOYMENT_TARGET: "17.0"
|
|
CODE_SIGNING_ALLOWED: "NO"
|
|
CODE_SIGNING_REQUIRED: "NO"
|
|
TVAnarchyCoreTests:
|
|
type: bundle.unit-test
|
|
platform: macOS
|
|
sources: [Tests/TVAnarchyCoreTests]
|
|
dependencies:
|
|
- target: TVAnarchyCore
|
|
settings:
|
|
base:
|
|
PRODUCT_BUNDLE_IDENTIFIER: local.lilith.TVAnarchyCoreTests
|
|
GENERATE_INFOPLIST_FILE: "YES"
|
|
schemes:
|
|
TVAnarchy:
|
|
build:
|
|
targets:
|
|
TVAnarchy: all
|
|
test:
|
|
targets:
|
|
- TVAnarchyCoreTests
|
|
gatherCoverageData: false
|
|
TVAnarchyiOS:
|
|
build:
|
|
targets:
|
|
TVAnarchyiOS: all
|
|
test:
|
|
targets:
|
|
- TVAnarchyiOSUITests
|
|
gatherCoverageData: false
|