#!/usr/bin/groovy

def build(Map config=[:]) {
  def platform = config.platform ?: 'android'
  def runAs = config.runAs ?: 'root'
  def url
  def releaseChannel = env.RELEASE_CHANNEL

  if (!config.image) {
    error 'image is required!'
  }

  def fileType = platform.equals('android') ? 'apk' : 'ipa'

  def clearDistCert = platform.equals('android') ? '' : '--clear-dist-cert'

  withDockerContainer(image: "${config.image}", args: "--user='${runAs}'") {
    url = sh script: """
      cd /usr/src/app \
      && expo build:${platform} --skip-workflow-check ${clearDistCert} --non-interactive --release-channel ${releaseChannel} > /dev/null 2>&1 \
      && expo url:${fileType}
    """, returnStdout: true
  }

  return url
}

def publish(Map config=[:]) {
  def runAs = config.runAs ?: 'root'
  def releaseChannel = env.RELEASE_ENV ?: env.RELEASE_CHANNEL // for RTI

  if (!config.image) {
    error 'image is required!'
  }

  withDockerContainer(image: "${config.image}", args: "--user='${runAs}'") {
    sh """
      cd /usr/src/app \
      && expo publish --release-channel ${releaseChannel}
    """
  }
}
