image: python:3.10-bullseye

stages:
  - test
  - build
  - deploy

variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"

cache:
  paths:
    - .cache/pip
    - venv/

# Before running other jobs, setup Python
before_script:
  - python -V
  - pip install virtualenv
  - virtualenv venv
  - source venv/bin/activate

# This job tests if the book compiles gracefully after a new addition
test-build:
  stage: test
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
    - if: $CI_COMMIT_BRANCH == "publish" && $CI_PIPELINE_SOURCE == "push"
  script:
    - pip install -r requirements.txt
    - jupyter-book clean book/
    - jupyter-book build book/

# This job commits the built HTML to the publish-html branch
# push-html:
#   stage: deploy
#   only:
#     - publish
#   before_script:
#     - apt-get update -y
#     - apt-get install rsync -y
#     - git config --global user.name "$GITLAB_USER_NAME"
#     - git config --global user.email "$GITLAB_USER_EMAIL"
#     - git fetch origin publish-html
#     - git checkout publish-html
#   script:
#     - rsync -av --delete-after --exclude=".git/" --exclude=".cache/" --exclude="venv/" ./book/_build/html/ .
#     - git add --all -- ':!.cache/*'
#     - git commit --allow-empty -m "$CI_COMMIT_MESSAGE"
#     - git push https://gitlab-ci-token:$ACCESS_TOKEN@gitlab.tudelft.nl/$CI_PROJECT_PATH.git publish-html
