# use the verse rocker image, as it contains tidyverse, devtools and some texlive
image: rocker/verse

# define stages of runner. at the moment,
# just build (no test or deploy).
stages:
  - build

build-job:
  stage: build

  cache:
    key: icc
    paths:
      - ./cache

  artifacts:
    paths:
      - "target/*"

  before_script:
    - source `find .. -name section_helper.sh`

    - start_section install_linux_packages "Installing missing Linux packages"
    - apt-get update
    - apt-get install -y build-essential libglpk40 libcurl4-gnutls-dev libxml2-dev libsodium-dev libsecret-1-dev libfontconfig1-dev libssl-dev libxt6 libpq-dev imagemagick ghostscript software-properties-common inkscape scour
    - add-apt-repository ppa:saiarcot895/chromium-beta
    - apt update
    - apt install -y chromium-browser
    - locale-gen de_DE.utf8 en_GB.utf8 en_US.utf8
    - end_section install_linux_packages

    - start_section install_fonts "Installing Libertinus and Fira fonts"
    - wget -O- https://github.com/mozilla/Fira/archive/refs/tags/4.202.tar.gz | tar -C /usr/share/fonts -zx --wildcards "*.otf"
    - fc-cache
    - end_section install_fonts

    - start_section testing_chromium Testing chromium PDF export
    - chromium-browser --headless --no-sandbox --disable-gpu --run-all-compositor-stages-before-draw --no-pdf-header-footer --print-to-pdf=./test.pdf https://www.ids-mannheim.de/
    - ls -l ./test.pdf
    - end_section testing_chromium

    - start_section install_r_packages "Installing missing R packages"
    - R -e "install.packages(c('scales', 'sp', 'raster', 'kableExtra', 'DT', 'svglite'))"
    - R -e 'devtools::install_git("https://korap.ids-mannheim.de/gerrit/IDS-Mannheim/idsThemeR")'
    - R -e 'devtools::install_git("https://korap.ids-mannheim.de/gerrit/IDS-Mannheim/posterdown")'
    - end_section install_r_packages

  script:
    - start_section installing "Installing posterdown (ids)"
    - R -e 'devtools::install()'
    - end_section installing
    - start_section render "Generating demo artifacts"
    - R_CACHE_ROOTPATH=./cache R -e "require(rmarkdown); render('inst/rmarkdown/templates/posterdown_ids/skeleton/skeleton.Rmd', output_format='posterdown::posterdown_ids', output_dir='target')"
    - ./ci/html2pdf target/skeleton.html target/skeleton.pdf 1
    - inkscape -b white --pdf-poppler -o target/skeleton.svg target/skeleton.pdf || true
    - scour -i target/skeleton.svg -o target/skeleton_optimized.svg --enable-viewboxing --enable-id-stripping --shorten-ids --indent=none
    - end_section render

