# .gitlab-ci.yml
image: "node:16-slim"

stages:
  - publish

publish:
  stage: publish
  variables:
    GIT_STRATEGY: clone
  before_script:
    - apt-get update && apt-get install git curl -y
  script:
    # Конфигурация npm
    - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc

    # Конфигурация git
    - git config --global user.email ";${GIT_USER_EMAIL}";
    - git config --global user.name ";${GIT_USER_NAME}";

    # Установка зависимостей и сборка проекта
    - npm install

    # Определение новой версии npm пакета и генерация CHANGELOG.md файла
    - npm run release
    - commitMessage=$(git log -1 --pretty=%B)
    - tagname=$(git tag --points-at HEAD)
    - version=${tagname:1}
    - npm run build

    # Решение проблемы с циклическим вызовом
    - git tag -d $tagname
    - git commit --amend -m "[ci skip] ${commitMessage}" --no-verify
    - git tag -a $tagname -m ''

    # Публикация в gitlab
    - git branch -a 
    - git push "https://${GIT_SYNC_USER}:${GIT_SYNC_TOKEN}@${CI_PROJECT_PATH}.git" --follow-tags HEAD:main

    # Публикация в npm
    - npm publish # "${NPM_PACKAGE_TITLE}" --new-version $version --verbose
    - echo "\n\n================ SUCCESS ================ \n\n"
    - curl -H "Title:MECMAPI npm publish SUCCESS" -H "Priority:high" -H "Tags:heavy_check_mark" -d "MECMAPI:published a new version to npm ($tagname)" "ntfy.sh/${NTFY_PUBLISH}"

  only:
    - main
