---
# Check the package repo on how to configure this job
# https://github.com/sandrochuber/pylic

variables:
  PYVERSION: "latest"
  PYLIC_SKIP_EXTRAS: ""  # Comma-separated list of extras that are to be skipped

python:pylic:
  stage: test
  image: registry.gitlab.com/notno/ci/images/python:$PYVERSION
  script:
    # work in venv
    - python3 -m venv .venv
    - source .venv/bin/activate
    - pip3 install importlib_metadata
    - echo "will run test on PYTHON_PACKAGE=${PYTHON_PACKAGE}"
    # install package without any of its dependencies
    - pip3 install . --no-deps
    # Extract package extras from metadata
    - EXTRAS=$(python -c "from importlib_metadata import metadata; print(','.join((extra for extra in metadata('${PYTHON_PACKAGE}').get_all('Provides-Extra', []) if not extra in '${PYLIC_SKIP_EXTRAS}'.split(','))), end='')")
    # work in venv
    - python3 -m venv .venv
    - source .venv/bin/activate
    - pip3 install pylic
    # if any extra dependencies are found, install them too
    - |
      if [ -z "${EXTRAS}" ]; then
        echo "[*] Installing package ${PYTHON_PACKAGE} without extras."
        pip3 install .
      else
        echo "[*] Installing package" ${PYTHON_PACKAGE} "with extras:" ${EXTRAS}
        pip3 install .[${EXTRAS}]
      fi
    - echo "[*] The following packages, with their respective version, will be checked:"
    - pylic list
    - pylic check
