~ knotless Search/
↑↓ move↵ open⇧↵ all results

grain.social/grain-ios

1 collaborator
0
1
main
150 lines · 4.4 KB Raw History
name: Grain
options:
  bundleIdPrefix: social.grain
  deploymentTarget:
    iOS: "26.0"
  xcodeVersion: "26.0"
  generateEmptyDirectories: true

settings:
  base:
    SWIFT_VERSION: "6.0"
    DEVELOPMENT_TEAM: ${APPLE_TEAM_ID}
    PRODUCT_NAME: ${BUNDLE_NAME}
    # The OAuth callback scheme Info.plist registers. `just sim-next` sets
    # it to social.grain.next, beside NEXT_API.
    GRAIN_OAUTH_SCHEME: social.grain
  configs:
    Debug:
      SWIFT_ACTIVE_COMPILATION_CONDITIONS: "DEBUG PRODUCTION_API"

packages:
  Nuke:
    url: https://github.com/kean/Nuke
    from: "12.0.0"
  KeychainAccess:
    url: https://github.com/kishikawakatsumi/KeychainAccess
    from: "4.2.2"
  SwiftyH3:
    url: https://github.com/pawelmajcher/SwiftyH3
    from: "0.5.0"
  MapLibre:
    url: https://github.com/maplibre/maplibre-gl-native-distribution
    from: "6.29.0"

targets:
  Grain:
    type: application
    platform: iOS
    sources:
      - path: Grain
    entitlements:
      path: Grain/Grain.entitlements
      properties:
        aps-environment: production
        com.apple.developer.associated-domains:
          - applinks:grain.social
          - webcredentials:grain.social
    settings:
      base:
        INFOPLIST_FILE: Grain/Info.plist
        PRODUCT_BUNDLE_IDENTIFIER: ${BUNDLE_ID}
        PRODUCT_MODULE_NAME: Grain
        TARGETED_DEVICE_FAMILY: "1"
        MARKETING_VERSION: "11"
        CURRENT_PROJECT_VERSION: "59"
        CODE_SIGN_STYLE: Automatic
        DEVELOPMENT_ASSET_PATHS: "\"$(SRCROOT)/Grain/Preview Content\""
        ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor
      configs:
        Debug:
          CODE_SIGN_ENTITLEMENTS: Grain/Grain-Debug.entitlements
          GRAIN_OS_LOG_LEVEL: Debug
        Release:
          GRAIN_OS_LOG_LEVEL: Default
    dependencies:
      - package: Nuke
        product: Nuke
      - package: Nuke
        product: NukeUI
      - package: KeychainAccess
      - package: SwiftyH3
      - package: MapLibre
    info:
      path: Grain/Info.plist
      properties:
        CFBundleVersion: "$(CURRENT_PROJECT_VERSION)"
        CFBundleShortVersionString: "$(MARKETING_VERSION)"
        CFBundleURLTypes:
          - CFBundleURLName: social.grain.deeplink
            CFBundleURLSchemes:
              - grain
          - CFBundleURLName: social.grain.oauth
            CFBundleURLSchemes:
              - $(GRAIN_OAUTH_SCHEME)
        CFBundleIconName: AppIcon
        ITSAppUsesNonExemptEncryption: false
        UISupportedInterfaceOrientations:
          - UIInterfaceOrientationPortrait
          - UIInterfaceOrientationPortraitUpsideDown
          - UIInterfaceOrientationLandscapeLeft
          - UIInterfaceOrientationLandscapeRight
        NSCameraUsageDescription: Grain needs camera access to take photos for your stories and galleries.
        NSPhotoLibraryUsageDescription: Grain needs photo library access to select photos for your galleries and stories.
        UIAppFonts:
          - Syne-Variable.ttf
        UILaunchScreen: {}
        OSLogPreferences:
          social.grain.grain:
            DEFAULT-OPTIONS:
              Level:
                Enable: "$(GRAIN_OS_LOG_LEVEL)"
                Persist: "$(GRAIN_OS_LOG_LEVEL)"
        UIApplicationShortcutItems:
          - UIApplicationShortcutItemType: social.grain.shortcut.createStory
            UIApplicationShortcutItemTitle: Create Story
            UIApplicationShortcutItemIconSymbolName: plus.circle
          - UIApplicationShortcutItemType: social.grain.shortcut.createGallery
            UIApplicationShortcutItemTitle: Create Post
            UIApplicationShortcutItemIconSymbolName: plus.square.on.square

  GrainTests:
    type: bundle.unit-test
    platform: iOS
    sources:
      - path: GrainTests
    settings:
      base:
        GENERATE_INFOPLIST_FILE: YES
        PRODUCT_NAME: GrainTests
        PRODUCT_MODULE_NAME: GrainTests
        TEST_HOST: $(BUILT_PRODUCTS_DIR)/${BUNDLE_NAME}.app/${BUNDLE_NAME}
        BUNDLE_LOADER: $(TEST_HOST)
    dependencies:
      - target: Grain

schemes:
  Grain:
    build:
      targets:
        Grain:
          - running
          - testing
          - profiling
          - analyzing
          - archiving
    run:
      config: Debug
    test:
      config: Debug
      gatherCoverageData: true
      coverageTargets:
        - Grain
      targets:
        - GrainTests
    profile:
      config: Debug
    analyze:
      config: Debug
    archive:
      config: Release