workflows:
  android:
    name: build, test & publish Android version
    max_build_duration: 30
    instance_type: mac_mini_m1
    working_directory: client/mobile
    environment:
      groups:
        - default
        - cloudflare_credentials
    cache:
      cache_paths:
        - $CM_BUILD_DIR/node_modules
    scripts:
        - name: Install npm dependencies
          script: |
            yarn
        - name: Set Android SDK location
          script: |
            echo "sdk.dir=$ANDROID_SDK_ROOT" > "./android/local.properties"
        - name: Set Files
          script: |
            echo $AGCONNECT_SERVICES | base64 --decode > "./android/app/agconnect-services.json"
            echo $KEYSTORE_FILE | base64 --decode > "./android/app/tailchat.keystore"
            echo "TAILCHAT_UPLOAD_STORE_FILE=$TAILCHAT_UPLOAD_STORE_FILE" >> "./.env"
            echo "TAILCHAT_UPLOAD_STORE_PASSWORD=$TAILCHAT_UPLOAD_STORE_PASSWORD" >> "./.env"
            echo "TAILCHAT_UPLOAD_KEY_ALIAS=$TAILCHAT_UPLOAD_KEY_ALIAS" >> "./.env"
            echo "TAILCHAT_UPLOAD_KEY_PASSWORD=$TAILCHAT_UPLOAD_KEY_PASSWORD" >> "./.env"
            echo "GETUI_APPID=$GETUI_APPID" >> "./.env"
            echo "GETUI_APPKEY=$GETUI_APPKEY" >> "./.env"
            echo "GETUI_APPSECRET=$GETUI_APPSECRET" >> "./.env"
            echo "GETUI_HUAWEI_APP_ID=$GETUI_HUAWEI_APP_ID" >> "./.env"
        - name: Build Android release
          working_directory: client/mobile/android
          script: |
            UPDATED_BUILD_NUMBER=$BUILD_NUMBER
            ./gradlew assembleRelease \
              -PversionCode=$UPDATED_BUILD_NUMBER \
              -PversionName=1.0.$UPDATED_BUILD_NUMBER
        - name: Build finished successfully
          script: touch ~/SUCCESS
    artifacts:
      - android/app/build/outputs/**/**/*.apk
    publishing:
      email:
        recipients:
          - moonrailgun@gmail.com
      scripts:
        - name: Install wrangler
          script: npm install -g wrangler
        - name: Deploy to Cloudflare Pages
          script: |
            if [[ -f ~/SUCCESS ]]; then
              if [[ $CM_BRANCH == "master" ]]; then
                # deploy to production
                wrangler pages deploy android/app/build/outputs/apk/release --project-name tailchat --branch main
              else
                wrangler pages deploy android/app/build/outputs/apk/release --project-name tailchat --branch $CM_BRANCH
              fi
            fi
        - name: Notify artifact URL to Tailchat
          script: |
            node scripts/notify-links.js


  ios:
    name: build, test & publish iOS version
    instance_type: mac_mini_m1
    working_directory: client/mobile
    environment:
      groups:
        - default
        - cloudflare_credentials
    cache:
      cache_paths:
        - $CM_BUILD_DIR/node_modules
    scripts:
      - name: Install npm dependencies
        script: |
          yarn
      - name: Build ipa for distribution
        working_directory: client/mobile/ios
        script: |
          xcode-project build-ipa \
            --workspace "$CM_BUILD_DIR/client/mobile/ios/$XCODE_WORKSPACE" \
            --scheme "$XCODE_SCHEME"
    artifacts:
      - build/ios/ipa/*.ipa
    publishing:
      email:
        recipients:
          - moonrailgun@gmail.com
