crossmate

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

project.yml (6486B)


      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.0.0"
     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         LSSupportsOpeningDocumentsInPlace: false
     79         UILaunchScreen: {}
     80         UISupportedInterfaceOrientations:
     81           - UIInterfaceOrientationPortrait
     82         UISupportedInterfaceOrientations~ipad:
     83           - UIInterfaceOrientationPortrait
     84           - UIInterfaceOrientationPortraitUpsideDown
     85           - UIInterfaceOrientationLandscapeLeft
     86           - UIInterfaceOrientationLandscapeRight
     87     settings:
     88       base:
     89         PRODUCT_BUNDLE_IDENTIFIER: net.inqk.crossmate
     90         INFOPLIST_FILE: Crossmate/Info.plist
     91         CODE_SIGN_ENTITLEMENTS: Crossmate/Crossmate.entitlements
     92         CROSSMATE_ENGAGEMENT_SOCKET_URL: $(inherited)
     93         CROSSMATE_PUSH_BASE_URL: $(inherited)
     94         CROSSMATE_SHARE_LINK_BASE_URL: $(inherited)
     95         # The share-link host (no scheme) for the associated-domains
     96         # entitlement; set alongside CROSSMATE_SHARE_LINK_BASE_URL in
     97         # Local.xcconfig. Empty on a checkout without it, which just means no
     98         # universal-link handling (links still work via the worker redirect).
     99         CROSSMATE_SHARE_LINK_HOST: $(inherited)
    100         APP_ATTEST_ENVIRONMENT: production
    101         TARGETED_DEVICE_FAMILY: "1,2"
    102         CODE_SIGN_STYLE: Automatic
    103       configs:
    104         # APS_ENVIRONMENT is the single source of truth for the APNs
    105         # environment: it is substituted into the aps-environment entitlement
    106         # (which decides the token's environment) and into Info.plist (which
    107         # PushClient reports to the push worker), so the two cannot diverge.
    108         Debug:
    109           APS_ENVIRONMENT: development
    110         # Disable linker identical-code-folding in Release so TestFlight crash
    111         # reports name the real Swift async functions instead of collapsing
    112         # them to <deduplicated_symbol> (which forces dwarfdump --lookup
    113         # guesswork during symbolication).
    114         Release:
    115           APS_ENVIRONMENT: production
    116           OTHER_LDFLAGS: $(inherited) -Wl,-no_deduplicate
    117 
    118   NotificationService:
    119     type: app-extension
    120     platform: iOS
    121     sources:
    122       - NotificationService
    123       - Shared
    124     info:
    125       path: NotificationService/Info.plist
    126       properties:
    127         CFBundleDisplayName: Crossmate Notification Service
    128         CFBundleShortVersionString: "1.0.0"
    129         CFBundleVersion: $(CURRENT_PROJECT_VERSION)
    130         NSExtension:
    131           NSExtensionPointIdentifier: com.apple.usernotifications.service
    132           NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).NotificationService
    133     settings:
    134       base:
    135         PRODUCT_BUNDLE_IDENTIFIER: net.inqk.crossmate.notificationservice
    136         INFOPLIST_FILE: NotificationService/Info.plist
    137         CODE_SIGN_ENTITLEMENTS: NotificationService/NotificationService.entitlements
    138         CODE_SIGN_STYLE: Automatic
    139         TARGETED_DEVICE_FAMILY: "1,2"
    140 
    141   Crossmate Unit Tests:
    142     type: bundle.unit-test
    143     platform: iOS
    144     sources:
    145       - Tests/Unit
    146       - Tests/Support
    147     dependencies:
    148       - target: Crossmate
    149     settings:
    150       PRODUCT_BUNDLE_IDENTIFIER: net.inqk.crossmate.unittests
    151       CODE_SIGN_STYLE: Automatic
    152       TEST_HOST: $(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate
    153       BUNDLE_LOADER: $(TEST_HOST)
    154       GENERATE_INFOPLIST_FILE: YES
    155 
    156 schemes:
    157   Crossmate:
    158     build:
    159       targets:
    160         Crossmate: all
    161       preActions:
    162         - script: |
    163             cd "${SRCROOT}"
    164             mkdir -p Generated
    165             buildYear=`git log -1 --format=%cd --date=format:%Y`
    166             buildVersion=`git rev-list HEAD | wc -l | tr -d ' '`
    167             {
    168               echo '#include? "Local.xcconfig"'
    169               echo "CURRENT_PROJECT_VERSION = $buildYear.$buildVersion"
    170             } > Generated/Config.xcconfig
    171           settingsTarget: Crossmate
    172     run:
    173       config: Debug
    174     test:
    175       config: Debug
    176       targets:
    177         - name: Crossmate Unit Tests
    178           parallelizable: true
    179           randomExecutionOrder: true
    180     profile:
    181       config: Release
    182     analyze:
    183       config: Debug
    184     archive:
    185       config: Release