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"
    - pip3 install --user 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.*$/

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_2204:
  stage: build
  image: "registry.gitlab.com/gerbolyze/build-containers/ubuntu:22.04"
  script:
    - "export CXX=clang++"
    - "make -C svg-flatten"
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-svg-flatten-ubu22"
    paths:
      - svg-flatten/build/svg-flatten
      - svg-flatten/build/nopencv-test

test:svg-flatten-ubuntu_2204:
  stage: test
  variables:
    GIT_SUBMODULE_STRATEGY: none
  image: "registry.gitlab.com/gerbolyze/build-containers/ubuntu:22.04"
  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-ubuntu_2204
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-test-ubu22"
    when: on_failure
    paths:
      - svg-flatten/testcase-fails/*.png
      - svg-flatten/testcase-fails/*.svg

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

test:svg-flatten-fedora_36:
  stage: test
  variables:
    GIT_SUBMODULE_STRATEGY: none
  image: "registry.gitlab.com/gerbolyze/build-containers/fedora:36"
  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_36
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-test-fed36"
    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