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."
        exit 1
      fi
    - flutter clean
    - flutter packages get
    - flutter pub publish --dry-run
  interruptible: true

application:release:
  stage: release
  image:
    name: alpine/git
    entrypoint: [""]
  only:
    - master
  except:
    - tags
  dependencies:
    - android:build-debug
  script:
    - apk --no-cache add curl
    - 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."
        exit 1
      else
        git tag -a "${TAG_NAME}" -m "Release ${VERSION_NAME}"
        git push origin "${TAG_NAME}"
        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
