variables:
  GIT_SUBMODULE_STRATEGY: recursive

stages:
  - build
  - test
  - publish

include:
  - local: "/svg-flatten/svg-flatten-wasi-ci.yml"

build:gerbolyze:
  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"
      # --break-system-packages to work around the latest way some galaxy brain messed up python's packaging stuff even
      # further just to break this CI pipeline for no reason :/
    - pip3 install --user --break-system-packages wheel
    - python3 setup.py sdist bdist_wheel
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-gerbolyze"
    paths:
      - dist/*

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

# Builds for debian are disabled until they get a C++20-capable compiler.
#build:svg-flatten-debian_11:
#  stage: build
#  image: "registry.gitlab.com/gerbolyze/build-containers/debian:11"
#  script:
#    - "export CXX=clang++"
#    - "make -C svg-flatten"
#  artifacts:
#    name: "gerbolyze-$CI_COMMIT_REF_NAME-svg-flatten-deb11"
#    paths:
#      - svg-flatten/build/svg-flatten
#      - svg-flatten/build/nopencv-test

# Tests for debian are disabled until they get python 3.10.
# test:svg-flatten-debian_11:
#   stage: test
#   variables:
#     GIT_SUBMODULE_STRATEGY: none
#   image: "registry.gitlab.com/gerbolyze/build-containers/debian:11"
#   script:
#     - git config --global --add safe.directory "$CI_PROJECT_DIR"
#     - "export PATH=$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
#     - "touch svg-flatten/build/svg-flatten svg-flatten/build/nopencv-test"
#     - "python3 setup.py install --user"
#     - "gerbolyze --help"
#     - "make -C svg-flatten tests"
#   dependencies:
#     - build:svg-flatten-debian_11
#   artifacts:
#     name: "gerbolyze-$CI_COMMIT_REF_NAME-test-deb11"
#     when: on_failure
#     paths:
#       - svg-flatten/testcase-fails/*.png
#       - svg-flatten/testcase-fails/*.svg

build:svg-flatten-ubuntu_rolling:
  stage: build
  image: "registry.gitlab.com/gerbolyze/build-containers/ubuntu:rolling"
  script:
    - "export CXX=clang++"
    - "make -C svg-flatten"
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-svg-flatten-uburl"
    paths:
      - svg-flatten/build/svg-flatten
      - svg-flatten/build/nopencv-test

# test:svg-flatten-ubuntu_rolling:
#   stage: test
#   variables:
#     GIT_SUBMODULE_STRATEGY: none
#   image: "registry.gitlab.com/gerbolyze/build-containers/ubuntu:rolling"
#   script:
#     - git config --global --add safe.directory "$CI_PROJECT_DIR"
#     - "export PATH=$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
#     - "touch svg-flatten/build/svg-flatten svg-flatten/build/nopencv-test"
#     - pip3 install --user --break-system-packages 'pillow>=9.1.1'
#     - "python3 setup.py install --user"
#     - "gerbolyze --help"
#     - "make -C svg-flatten tests"
#   dependencies:
#     - build:svg-flatten-ubuntu_rolling
#   artifacts:
#     name: "gerbolyze-$CI_COMMIT_REF_NAME-test-uburl"
#     when: on_failure
#     paths:
#       - svg-flatten/testcase-fails/*.png
#       - svg-flatten/testcase-fails/*.svg

build:svg-flatten-fedora_latest:
  stage: build
  image: "registry.gitlab.com/gerbolyze/build-containers/fedora:latest"
  script:
    - "export CXX=clang++"
    - "make -C svg-flatten"
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-svg-flatten-fedlt"
    paths:
      - svg-flatten/build/svg-flatten
      - svg-flatten/build/nopencv-test

#test:svg-flatten-fedora_latest:
#  stage: test
#  variables:
#    GIT_SUBMODULE_STRATEGY: none
#  image: "registry.gitlab.com/gerbolyze/build-containers/fedora:latest"
#  script:
#    - git config --global --add safe.directory "$CI_PROJECT_DIR"
#    - "export PATH=$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
#    - "touch svg-flatten/build/svg-flatten svg-flatten/build/nopencv-test"
#    - pip3 install --user 'pillow>=9.1.1'
#    - "python3 setup.py install --user"
#    - "gerbolyze --help"
#    - "make -C svg-flatten tests"
#  dependencies:
#    - build:svg-flatten-fedora_latest
#  artifacts:
#    name: "gerbolyze-$CI_COMMIT_REF_NAME-test-fedlt"
#    when: on_failure
#    paths:
#      - svg-flatten/testcase-fails/*.png
#      - svg-flatten/testcase-fails/*.svg

build:svg-flatten-archlinux:
  stage: build
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  script:
    - "make -C svg-flatten"
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-svg-flatten-arch"
    paths:
      - svg-flatten/build/svg-flatten
      - svg-flatten/build/nopencv-test

#test:svg-flatten-archlinux:
#  stage: test
#  variables:
#    GIT_SUBMODULE_STRATEGY: none
#  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
#  script:
#    - git config --global --add safe.directory "$CI_PROJECT_DIR"
#    - "export PATH=$HOME/.local/bin:$HOME/.cargo/bin:$PATH"
#    - "touch svg-flatten/build/svg-flatten svg-flatten/build/nopencv-test"
#    - "python setup.py install --user"
#    - "gerbolyze --help"
#    - "make -C svg-flatten tests"
#  dependencies:
#    - build:svg-flatten-archlinux
#  artifacts:
#    name: "gerbolyze-$CI_COMMIT_REF_NAME-test-arch"
#    when: on_failure
#    paths:
#      - svg-flatten/testcase-fails/*.png
#      - svg-flatten/testcase-fails/*.svg
#
