name: ElementX

schemes:
  ElementX:
    analyze:
      config: Debug
    archive:
      config: Release
    build:
      targets:
        ElementX:
          - running
          - testing
          - profiling
          - analyzing
          - archiving
    profile:
      config: Release
    run:
      config: Debug
      environmentVariables:
        - variable: RUST_BACKTRACE
          value: full
          isEnabled: false
        - variable: HTTPS_PROXY
          value: 192.168.0.111:9090
          isEnabled: false
    test:
      config: Debug
      gatherCoverageData: true
      coverageTargets:
        - ElementX
      targets:
        - UnitTests
      environmentVariables:
        IS_RUNNING_UNIT_TESTS: "1"

targets:
  ElementX:
    type: application
    platform: iOS

    info:
      path: ../SupportingFiles/Info.plist
      properties:
        UILaunchStoryboardName: LaunchScreen
        CFBundleDisplayName: $(PRODUCT_NAME)
        CFBundleShortVersionString: $(MARKETING_VERSION)
        CFBundleVersion: $(CURRENT_PROJECT_VERSION)
        UISupportedInterfaceOrientations: [
          UIInterfaceOrientationPortrait,
          UIInterfaceOrientationPortraitUpsideDown,
          UIInterfaceOrientationLandscapeLeft,
          UIInterfaceOrientationLandscapeRight
        ]
        appGroupIdentifier: $(APP_GROUP_IDENTIFIER)
        baseBundleIdentifier: $(BASE_BUNDLE_IDENTIFIER)
        keychainAccessGroupIdentifier: $(KEYCHAIN_ACCESS_GROUP_IDENTIFIER)
        ITSAppUsesNonExemptEncryption: false
        NSUserActivityTypes: [
          INSendMessageIntent
        ]

    settings:
      base:
        PRODUCT_NAME: ElementX
        PRODUCT_BUNDLE_IDENTIFIER: $(BASE_BUNDLE_IDENTIFIER)
        MARKETING_VERSION: $(MARKETING_VERSION)
        CURRENT_PROJECT_VERSION: $(CURRENT_PROJECT_VERSION)
        DEVELOPMENT_TEAM: $(DEVELOPMENT_TEAM)
        CODE_SIGN_ENTITLEMENTS: ElementX/SupportingFiles/ElementX.entitlements 
        SWIFT_OBJC_BRIDGING_HEADER: ElementX/SupportingFiles/ElementX-Bridging-Header.h
        SWIFT_OBJC_INTERFACE_HEADER_NAME: GeneratedInterface-Swift.h
        
    preBuildScripts:
    - name: 🛠 SwiftGen
      runOnlyWhenInstalling: false
      basedOnDependencyAnalysis: false
      shell: /bin/sh
      script: |
        export PATH="$PATH:/opt/homebrew/bin"
        if which swiftgen >/dev/null; then
            swiftgen config run --config Tools/SwiftGen/swiftgen-config.yml
        else
            echo "warning: SwiftGen not installed, download from https://github.com/SwiftGen/SwiftGen"
        fi

    postBuildScripts:
    - name: ⚠️ SwiftLint
      runOnlyWhenInstalling: false
      basedOnDependencyAnalysis: false
      shell: /bin/sh
      script: |
        export PATH="$PATH:/opt/homebrew/bin"
        if which swiftlint >/dev/null; then
            swiftlint
        else
            echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
        fi
    - name: 🧹 SwiftFormat
      runOnlyWhenInstalling: false
      basedOnDependencyAnalysis: false
      shell: /bin/sh
      script: |
        export PATH="$PATH:/opt/homebrew/bin"
        if which swiftformat >/dev/null; then
            swiftformat --lint --lenient "$PROJECT_DIR"
        else
            echo "warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat"
        fi

    dependencies:
    - target: NSE
    - package: MatrixRustSDK
    - package: DesignKit
    - package: AnalyticsEvents
    - package: AppAuth
    - package: Collections
    - package: DeviceKit
    - package: DTCoreText
    - package: KeychainAccess
    - package: Kingfisher
    - package: PostHog
    - package: SwiftyBeaver
    - package: SwiftState
    - package: GZIP
    - package: Sentry
    - package: Version

    sources:
    - path: ../Sources
      excludes:
        - Other/Extensions/XCUIElement.swift
    - path: ../Resources
    - path: ../SupportingFiles
    - path: ../../Tools/Scripts/Templates/SimpleScreenExample/ElementX
