---
python:semantic-release:version:
  image: registry.gitlab.com/notno/python-tests:latest
  stage: build
  script:
    - pip install python-semantic-release
    # 1. semantic release will bump versions in files -> we want this
    # 2. THEN it will try to commit to git -> we don't want this! -> we allow it to fail if it fails on the git commit
    - SEMANTIC_LOG=$(env -u GIT_AUTHOR_NAME -u GIT_AUTHOR_EMAIL -u GIT_COMMITTER_NAME -u GIT_COMMITTER_EMAIL semantic-release version 2>&1 || true)
    - |
      ALLOWED_GIT_ERROR="Cmd('git') failed due to: exit code(128)"
      if grep -q "${ALLOWED_GIT_ERROR}" <<< "${SEMANTIC_LOG}"; then
        echo "[+] Successfully parsed files using semantic release."
      else
        echo "${SEMANTIC_LOG}"
        exit 1
      fi
    - CHANGED_FILES=$(git diff --cached --name-status | cut -f2)
    - |
      if [ ! -z "${CHANGED_FILES}" ]; then
        echo -e "[+] The following files had their version changed:\n${CHANGED_FILES}"
      else
        echo "[!] No files were changed during versioning."
      fi
    # 3. all changed files are passed as artifacts to the next stages
  artifacts:
    paths:
      - ./*
    exclude:
      - .git
