name: Riot

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

targets:
  Riot:
    type: application
    platform: iOS

    dependencies:
    # Disabled due to crypto corruption issues.
    # https://github.com/element-hq/element-ios/issues/7618
    # - target: RiotShareExtension
    # - target: SiriIntents
    - target: RiotNSE
    - target: BroadcastUploadExtension
    - target: DesignKit
    - target: CommonKit
    - package: AnalyticsEvents
    - package: Mapbox
    - package: OrderedCollections
    - package: SwiftOGG
    - package: WysiwygComposer
    - package: DeviceKit
    - package: DTCoreText
    - package: PostHog

    configFiles:
      Debug: Debug.xcconfig
      Release: Release.xcconfig

    preBuildScripts:
    - name: ⚠️ SwiftLint
      runOnlyWhenInstalling: false
      shell: /bin/sh
      script: "\"${PODS_ROOT}/SwiftLint/swiftlint\"\n"
    - name: 🛠 SwiftGen
      runOnlyWhenInstalling: false
      shell: /bin/sh
      script: "\"${PODS_ROOT}/SwiftGen/bin/swiftgen\" config run --config \"Tools/SwiftGen/swiftgen-config.yml\"\n"
    - name: 📖 locheck
      runOnlyWhenInstalling: false
      shell: /bin/sh
      script: |
        # homebrew uses a non-standard directory on M1
        if [[ $(arch) = arm64 ]]; then export PATH="$PATH:/opt/homebrew/bin"; fi
        xcrun --sdk macosx mint run Asana/locheck@0.9.6 discoverlproj --treat-warnings-as-errors --ignore-missing --ignore lproj_file_missing_from_translation "$PROJECT_DIR/Riot/Assets"

    sources:
    - path: ../RiotSwiftUI/Modules
      # Riot will provide it's own LocaleProviderType so exclude.
      excludes:
      - "Common/Locale/LocaleProvider.swift"
      - "**/Test/**"
    - path: ../Tools
      excludes:
        - "Logs"
        - "Release"
        - "Templates/*.sh"
    - path: ../Config
    - path: .
      excludes:
        - "Modules/Room/EmojiPicker/Data/EmojiMart/EmojiJSONStore.swift"
        # RTL is broken so languages are disabled for now
        - "Assets/ar.lproj/**"
        - "Assets/he.lproj/**"
        - "Assets/enm.lproj/**"
        - "Assets/pr.lproj/**" # Unsupported language on iOS
    - path: ../RiotShareExtension/Shared
    - path: Modules/MatrixKit
      excludes:
        - "**/*.md" # excludes all files with the .md extension
