image: python:latest

stages:
  - build
  - test
  - coverage
  - doc_build

navipy_install:
  stage: build
  before_script:
  - python3 -V # Print out python version for debugging

  script:
  - pip3 install virtualenv
  - virtualenv -p python3 venv
  - source venv/bin/activate
  - pip3 install .
  - python navipy/scripts/config_matplotlib_server.py # because no interactive backend

  artifacts:
    paths:
      - venv
    expire_in: 2 hours

  artifacts:
    paths:
      - venv

flake8:
  stage: test
  dependencies:
  - navipy_install

  script:
  - source $CI_PROJECT_DIR/venv/bin/activate
  - python3 -m flake8 navipy/*.py
  
navipy_unittest:
  stage: test
  dependencies: 
  - navipy_install

  script:
  - source $CI_PROJECT_DIR/venv/bin/activate
  - python3 -m coverage run -m unittest discover navipy

  artifacts:
    paths:
      - .coverage
    expire_in: 1 hours

coverage:
  stage: coverage
  dependencies: 
  - navipy_install
  - navipy_unittest
  
  script:
  - source $CI_PROJECT_DIR/venv/bin/activate
  - python3 -m coverage html

  artifacts:
    paths:
      - coverage_html_report
    expire_in: 1 day

doc_build:
  stage: doc_build
  dependencies:
  - navipy_install
  - coverage

  before_script:
  - apt-get update -y; apt-get install -y -qq pandoc

  script:
  - source $CI_PROJECT_DIR/venv/bin/activate
  - cd doc ; make html

  artifacts:
    paths:
    - doc/build
    
    expire_in: 1 week