image: ghcr.io/cirruslabs/flutter:latest

stages:
  - build-debug
  - release

android:build-debug:
  stage: build-debug
  except:
    - tags
    - master
  script:
    # Check flutter package
    - VERSION_NAME="$(grep '^version:' pubspec.yaml | cut -d' ' -f2)"
    - echo "${VERSION_NAME}"
    - TAG_NAME="${VERSION_NAME}"
    - echo "${TAG_NAME}"
    - >
      if [ $(git tag -l "${TAG_NAME}") ]; then
        echo "Tag ${TAG_NAME} already exists."
      fi
    - flutter clean
    - flutter packages get
    - flutter pub publish --dry-run
  interruptible: true

application:release:
  stage: release
  only:
    - master
  except:
    - tags
  dependencies:
    - android:build-debug
  script:
    - git config user.email "${GITLAB_USER_EMAIL}"
    - git config user.name "${GITLAB_USER_NAME}"
    - git remote set-url origin https://oauth2:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}
    - VERSION_NAME="$(grep '^version:' pubspec.yaml | cut -d' ' -f2)"
    - echo "${VERSION_NAME}"
    - TAG_NAME="${VERSION_NAME}"
    - echo "${TAG_NAME}"
    - >
      if [ $(git tag -l "${TAG_NAME}") ]; then
        echo "Tag ${TAG_NAME} already exists."
      else
        git tag -a "${TAG_NAME}" -m "Release ${VERSION_NAME}"
        git push origin "${TAG_NAME}"
        flutter clean
        flutter packages get
        echo "${PRIVATE_PACKAGES_REPOSITORY_KEY}" | flutter pub token add https://pub.harrault.fr
        flutter pub publish --force
        curl --silent -d "{\"token\": \"${JABBER_NOTIFICATION_TOKEN}\", \"message\": \"New tag for ${CI_PROJECT_PATH}: ${TAG_NAME}\"}" -H "Content-Type: application/json" -X POST ${JABBER_NOTIFICATION_URL}
      fi