stages:
  - build
  - sign
  - publish
  - locales

on_setup:
  image: curlimages/curl:7.77.0
  stage: .pre
  only:
    - main
    - tags
  variables:
    INSTANCE: "https://codeberg.org"
    MAIN_REPO: gitnex/GitNex
    STATE: pending
  script:
    - ./scripts/add-commit-status.sh

build:
  image: nextcloudci/android8:android-61
  stage: build
  only:
    - main
    - tags
  script:
    - ./gradlew assembleFreeRelease
  artifacts:
    paths:
      - app/build/outputs/
    expire_in: 15 minutes

sign:
  image: nextcloudci/android8:android-61
  stage: sign
  only:
    - main
    - tags
  variables:
    OUTPUT: "signed.apk"
    INSTANCE: "https://codeberg.org"
    KS_FILE: "ci_keystore.jks"
  script:
    - ./scripts/sign-build.sh
  artifacts:
    paths:
      - signed.apk
    expire_in: 15 minutes

latest:
  image: curlimages/curl:7.77.0
  stage: publish
  only:
    - main
    - tags
  variables:
    WEBDAV_USERNAME: "GitNexBot"
    PLUGIN_FILE: "signed.apk"
    PLUGIN_DESTINATION: "https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/builds/latest.apk"
  script:
    - curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" "$PLUGIN_DESTINATION"

release:
  image: curlimages/curl:7.77.0
  stage: publish
  only:
    - tags
  variables:
    WEBDAV_USERNAME: "GitNexBot"
    PLUGIN_FILE: "signed.apk"
  script:
    - "[[ $CI_COMMIT_REF_NAME == *'-rc'* ]] && echo 'Upload blocked. Build seems to be a release candidate.' && exit 0"
    - curl -T "$PLUGIN_FILE" -u "$WEBDAV_USERNAME":"$WEBDAV_PASSWORD" 'https://cloud.swatian.com/remote.php/dav/files/GitNexBot/gitnex/releases/'"$CI_COMMIT_REF_NAME"'.apk'

push_translations:
  image: crowdin/cli:3.7.8
  stage: locales
  only:
    refs:
      - main
    changes:
      - app/src/main/res/values/strings.xml
  script:
    - echo "Set up Crowdin CLI"
    - cp crowdin.example.yml crowdin.yml
    - sed -i 's/-removed-/'"$CROWDIN_TOKEN"'/' crowdin.yml
    - echo "Push translations"
    - crowdin push

on_success:
  image: curlimages/curl:7.77.0
  stage: .post
  only:
    - main
    - tags
  variables:
    INSTANCE: "https://codeberg.org"
    MAIN_REPO: gitnex/GitNex
    STATE: success
  script:
    - ./scripts/add-commit-status.sh
  when: on_success

on_failure:
  image: curlimages/curl:7.77.0
  stage: .post
  only:
    - main
    - tags
  variables:
    INSTANCE: "https://codeberg.org"
    MAIN_REPO: gitnex/GitNex
    STATE: failure
  script:
    - ./scripts/add-commit-status.sh
  when: on_failure
