variables:
  GIT_SUBMODULE_STRATEGY: recursive

stages:
  - build
  - test
  - docs
  - publish

build:archlinux:
  stage: build
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  variables:
    GIT_SUBMODULE_STRATEGY: none
  script:
    - git config --global --add safe.directory "$CI_PROJECT_DIR"
    - uv build
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-gerbonara"
    paths:
      - dist/*

# FIXME: disable tests since (a) currenty kicad-cli is broken (aborts on start), and the workaround of using an older
# version from the KiCad project's kicad-cli containers does not work in gitlab CI. Pain.
#test:archlinux:
#  stage: test
#  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
#  script:
#    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-symbols
#    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-footprints
#    - env KICAD_SYMBOLS=kicad-symbols KICAD_FOOTPRINTS=kicad-footprints pytest -o 'testpaths=gerbonara/tests' -o 'norecursedirs=*'
#  dependencies:
#    - build:archlinux
#  cache:
#    key: test-image-cache
#    paths:
#      - gerbonara/tests/image_cache/*.svg
#      - gerbonara/tests/image_cache/*.png
#  artifacts:
#    name: "gerbolyze-$CI_COMMIT_REF_NAME-gerbonara"
#    when: on_failure
#    paths:
#      - gerbonara_test_failures/*
#
#test:ubuntu-rolling:
#  stage: test
#  image: "registry.gitlab.com/gerbolyze/build-containers/ubuntu:rolling"
#  script:
#    - python3 -m pip install --break-system-packages pytest beautifulsoup4 pillow numpy slugify lxml click scipy
#    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-symbols
#    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-footprints
#    - env KICAD_SYMBOLS=kicad-symbols KICAD_FOOTPRINTS=kicad-footprints python3 -m pytest -o 'testpaths=gerbonara/tests' -o 'norecursedirs=*'
#  dependencies:
#    - build:archlinux
#  cache:
#    key: test-image-cache
#    paths:
#      - gerbonara/tests/image_cache/*.svg
#      - gerbonara/tests/image_cache/*.png
#  artifacts:
#    name: "gerbolyze-$CI_COMMIT_REF_NAME-gerbonara"
#    when: on_failure
#    paths:
#      - gerbonara_test_failures/*

docs:archlinux:
  stage: test
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  script:
    - git config --global --add safe.directory "$CI_PROJECT_DIR"
    - sphinx-build -E docs docs/_build
  dependencies:
    - build:archlinux
  artifacts:
    name: "docs-gerbonara-$CI_COMMIT_REF_NAME"
    paths:
      - docs/_build

publish:gerbonara:
  stage: publish
  variables:
    GIT_SUBMODULE_STRATEGY: none
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  cache: {}
  script:
    - export TWINE_USERNAME TWINE_PASSWORD
    - pip3 install --user --break-system-packages twine rich
    - twine upload dist/*
  dependencies:
    - build:archlinux
  only:
    - /^v.*$/

pages:
  stage: publish
  variables:
    GIT_SUBMODULE_STRATEGY: none
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  script:
    - git config --global --add safe.directory "$CI_PROJECT_DIR"
    - sphinx-build -E docs public
  dependencies:
    - build:archlinux
  artifacts:
    paths:
      - public
  only:
    - /^v.*$/

