crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

project.yml (7498B)


      1 name: Crossmate
      2 
      3 options:
      4   bundleIdPrefix: net.inqk.crossmate
      5   deploymentTarget:
      6     iOS: "17.5"
      7 
      8 configFiles:
      9   Debug: Generated/Config.xcconfig
     10   Release: Generated/Config.xcconfig
     11 
     12 settings:
     13   SWIFT_VERSION: 6
     14   DEAD_CODE_STRIPPING: YES
     15   ENABLE_USER_SCRIPT_SANDBOXING: YES
     16   ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_EXTENSIONS: YES
     17   ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: YES
     18   SWIFT_EMIT_LOC_STRINGS: YES
     19   STRING_CATALOG_GENERATE_SYMBOLS: YES
     20   DEVELOPMENT_TEAM: 7TD7PZBNXP
     21 
     22 targets:
     23   Crossmate:
     24     type: application
     25     platform: iOS
     26     sources:
     27       - Crossmate
     28       - Shared
     29       - path: Puzzles
     30         type: folder
     31         buildPhase: resources
     32     dependencies:
     33       - target: NotificationService
     34         embed: true
     35         codeSign: true
     36     info:
     37       path: Crossmate/Info.plist
     38       properties:
     39         CFBundleDisplayName: Crossmate
     40         CFBundleShortVersionString: "1.2.2"
     41         CFBundleVersion: $(CURRENT_PROJECT_VERSION)
     42         ITSAppUsesNonExemptEncryption: false
     43         CADisableMinimumFrameDurationOnPhone: true
     44         LSRequiresIPhoneOS: true
     45         UIBackgroundModes:
     46           - remote-notification
     47         NSUbiquitousContainers:
     48           iCloud.net.inqk.crossmate:
     49             NSUbiquitousContainerIsDocumentScopePublic: true
     50             NSUbiquitousContainerName: Crossmate
     51             NSUbiquitousContainerSupportedFolderLevels: Any
     52         UTImportedTypeDeclarations:
     53           - UTTypeIdentifier: net.inqk.crossmate.xd
     54             UTTypeDescription: Crossmate Puzzle
     55             UTTypeConformsTo:
     56               - public.plain-text
     57             UTTypeTagSpecification:
     58               public.filename-extension:
     59                 - xd
     60           - UTTypeIdentifier: com.litsoft.puz
     61             UTTypeDescription: Across Lite Puzzle
     62             UTTypeConformsTo:
     63               - public.data
     64             UTTypeTagSpecification:
     65               public.filename-extension:
     66                 - puz
     67         CFBundleDocumentTypes:
     68           - CFBundleTypeName: Crossmate Puzzle
     69             LSHandlerRank: Owner
     70             LSItemContentTypes:
     71               - net.inqk.crossmate.xd
     72               - com.litsoft.puz
     73         CKSharingSupported: true
     74         CrossmateEngagementSocketURL: $(CROSSMATE_ENGAGEMENT_SOCKET_URL)
     75         CrossmatePushBaseURL: $(CROSSMATE_PUSH_BASE_URL)
     76         CrossmateShareLinkBaseURL: $(CROSSMATE_SHARE_LINK_BASE_URL)
     77         CrossmateAPSEnvironment: $(APS_ENVIRONMENT)
     78         CrossmateICloudEnvironment: $(ICLOUD_ENVIRONMENT)
     79         LSSupportsOpeningDocumentsInPlace: false
     80         UILaunchScreen: {}
     81         UISupportedInterfaceOrientations:
     82           - UIInterfaceOrientationPortrait
     83         UISupportedInterfaceOrientations~ipad:
     84           - UIInterfaceOrientationPortrait
     85           - UIInterfaceOrientationPortraitUpsideDown
     86           - UIInterfaceOrientationLandscapeLeft
     87           - UIInterfaceOrientationLandscapeRight
     88     settings:
     89       base:
     90         PRODUCT_BUNDLE_IDENTIFIER: net.inqk.crossmate
     91         INFOPLIST_FILE: Crossmate/Info.plist
     92         CODE_SIGN_ENTITLEMENTS: Crossmate/Crossmate.entitlements
     93         CROSSMATE_ENGAGEMENT_SOCKET_URL: $(inherited)
     94         CROSSMATE_PUSH_BASE_URL: $(inherited)
     95         CROSSMATE_SHARE_LINK_BASE_URL: $(inherited)
     96         # The share-link host (no scheme) for the associated-domains
     97         # entitlement; set alongside CROSSMATE_SHARE_LINK_BASE_URL in
     98         # Local.xcconfig. Empty on a checkout without it, which just means no
     99         # universal-link handling (links still work via the worker redirect).
    100         CROSSMATE_SHARE_LINK_HOST: $(inherited)
    101         APP_ATTEST_ENVIRONMENT: production
    102         TARGETED_DEVICE_FAMILY: "1,2"
    103         CODE_SIGN_STYLE: Automatic
    104         # ICLOUD_ENVIRONMENT is the single source of truth for the CloudKit
    105         # environment, on the same pattern as APS_ENVIRONMENT: it feeds the
    106         # icloud-container-environment entitlement (which picks the database)
    107         # and Info.plist (which the storage audit reports), so a log can never
    108         # misattribute which database it read. Xcode picks the environment
    109         # implicitly from the build configuration when the entitlement is
    110         # absent; naming it makes that choice visible and overridable.
    111         # Set ICLOUD_ENVIRONMENT_OVERRIDE in Local.xcconfig to point a Debug
    112         # build at Production without touching the committed defaults.
    113         ICLOUD_ENVIRONMENT: $(ICLOUD_ENVIRONMENT_OVERRIDE:default=$(ICLOUD_ENVIRONMENT_DEFAULT))
    114       configs:
    115         # APS_ENVIRONMENT is the single source of truth for the APNs
    116         # environment: it is substituted into the aps-environment entitlement
    117         # (which decides the token's environment) and into Info.plist (which
    118         # PushClient reports to the push worker), so the two cannot diverge.
    119         Debug:
    120           APS_ENVIRONMENT: development
    121           ICLOUD_ENVIRONMENT_DEFAULT: Development
    122         # Disable linker identical-code-folding in Release so TestFlight crash
    123         # reports name the real Swift async functions instead of collapsing
    124         # them to <deduplicated_symbol> (which forces dwarfdump --lookup
    125         # guesswork during symbolication).
    126         Release:
    127           APS_ENVIRONMENT: production
    128           ICLOUD_ENVIRONMENT_DEFAULT: Production
    129           OTHER_LDFLAGS: $(inherited) -Wl,-no_deduplicate
    130 
    131   NotificationService:
    132     type: app-extension
    133     platform: iOS
    134     sources:
    135       - NotificationService
    136       - Shared
    137     info:
    138       path: NotificationService/Info.plist
    139       properties:
    140         CFBundleDisplayName: Crossmate Notification Service
    141         CFBundleShortVersionString: "1.2.2"
    142         CFBundleVersion: $(CURRENT_PROJECT_VERSION)
    143         NSExtension:
    144           NSExtensionPointIdentifier: com.apple.usernotifications.service
    145           NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).NotificationService
    146     settings:
    147       base:
    148         PRODUCT_BUNDLE_IDENTIFIER: net.inqk.crossmate.notificationservice
    149         INFOPLIST_FILE: NotificationService/Info.plist
    150         CODE_SIGN_ENTITLEMENTS: NotificationService/NotificationService.entitlements
    151         CODE_SIGN_STYLE: Automatic
    152         TARGETED_DEVICE_FAMILY: "1,2"
    153 
    154   Crossmate Unit Tests:
    155     type: bundle.unit-test
    156     platform: iOS
    157     sources:
    158       - Tests/Unit
    159       - Tests/Support
    160     dependencies:
    161       - target: Crossmate
    162     settings:
    163       PRODUCT_BUNDLE_IDENTIFIER: net.inqk.crossmate.unittests
    164       CODE_SIGN_STYLE: Automatic
    165       TEST_HOST: $(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate
    166       BUNDLE_LOADER: $(TEST_HOST)
    167       GENERATE_INFOPLIST_FILE: YES
    168 
    169 schemes:
    170   Crossmate:
    171     build:
    172       targets:
    173         Crossmate: all
    174       preActions:
    175         - script: |
    176             cd "${SRCROOT}"
    177             mkdir -p Generated
    178             unset SWIFT_DEBUG_INFORMATION_FORMAT SWIFT_DEBUG_INFORMATION_VERSION
    179             buildYear=`git log -1 --format=%cd --date=format:%Y`
    180             buildVersion=`git rev-list HEAD | wc -l | tr -d ' '`
    181             {
    182               echo '#include? "Local.xcconfig"'
    183               echo "CURRENT_PROJECT_VERSION = $buildYear.$buildVersion"
    184             } > Generated/Config.xcconfig
    185           settingsTarget: Crossmate
    186     run:
    187       config: Debug
    188     test:
    189       config: Debug
    190       targets:
    191         - name: Crossmate Unit Tests
    192           parallelizable: true
    193           randomExecutionOrder: true
    194     profile:
    195       config: Release
    196     analyze:
    197       config: Debug
    198     archive:
    199       config: Release