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

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

build-job:
  stage: build

  cache:
    key: revealjs
    paths:
      - ./cache

  artifacts:
    paths:
      - "target/*"
      - "target/ids_files/*"

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

    - start_section install_linux_packages "Installing missing Linux packages"
    - apt-get update
    - apt-get install -y libvulkan1 libu2f-udev fonts-liberation build-essential libglpk40 libcurl4-gnutls-dev libxml2-dev libsodium-dev libsecret-1-dev libfontconfig1-dev libssl-dev libxt6 libpq-dev imagemagick libnss3 libgbm-dev libxss1 libappindicator3-1 libasound2 libatk-bridge2.0-0 libgtk-3-0 libnspr4 libnss3 libgbm-dev ca-certificates curl gnupg
    - curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
    - NODE_MAJOR=20
    - echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
    - apt-get update && apt-get install nodejs -y
    - node --version
    - npm install puppeteer
    - locale-gen de_DE.utf8 en_GB.utf8 en_US.utf8
    - end_section install_linux_packages

    - start_section test_puppeteer "Testing puppeteer"
    - ./ci/screenshot https://www.google.com /tmp/google.png
    - end_section test_puppeteer

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

  script:
    - start_section render "Running scripts"
    - R_CACHE_ROOTPATH=./cache R -e "require(rmarkdown); render('examples/ids.Rmd', output_format='revealjs::revealjs_presentation', output_dir='target')"
    - ./ci/screenshot file://`pwd`/target/ids.html target/title.png
          file://`pwd`/target/ids.html#/light-verb-constructions target/lvc.png
          file://`pwd`/target/ids.html#/registered-users target/users.png
          file://`pwd`/target/ids.html#/references-1 target/references.png
    - end_section render
