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

variables:
  # Set `CCACHE_BASEDIR` and `CCACHE_DIR` to point `ccache` towards the cached
  # path on the gitlab-runner. This enables to cache the output of `ccache`
  # between various runs.
  CCACHE_BASEDIR: "${CI_PROJECT_DIR}"
  CCACHE_DIR: "${CI_PROJECT_DIR}/ccache"
  # Set `ccache` to `content` to prevent rebuilding of the CI/CD containers to
  # trigger a recreate of the cache. By using `content` the compiler's `mtime`
  # is not considered as part of the hash.
  CCACHE_COMPILERCHECK: "content"
  # Enable caching for `apt-get`.
  APT_CACHE_DIR: "${CI_PROJECT_DIR}/apt-cache"
  # Export `noninteractive` frontend to prevent requesting user input.
  DEBIAN_FRONTEND: "noninteractive"
  R_LIBS_USER: "RLIB/library"
  SOURCE_FILE: "inst/rmarkdown/templates/posterdown_ids/skeleton/skeleton.Rmd"

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

build-job:
  stage: build

  cache:
    key: posterdown-ids
    paths:
      - cache
      - apt-cache/
      - ccache/
      - RLIB/library/

  artifacts:
    paths:
      - "target/*"

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

    - start_section apt_mirrors "Configuring apt mirror and retries"
    - . /etc/os-release || true
    - |
      # Prefer mirror lists (automatic, resilient). Optionally force a German mirror
      # by setting APT_FORCE_DE_MIRROR=1 in CI/CD variables if you want a fixed DE mirror.
      # Handle both classic sources.list and Deb822 .sources files.
      set -eu
      APT_FILES=(/etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources)
      # shellcheck disable=SC2068
      APT_FILES=( ${APT_FILES[@]} )
      echo "--- os-release (selected) ---"
      grep -E '^(ID|VERSION_ID|VERSION_CODENAME|UBUNTU_CODENAME)=' /etc/os-release || true
      echo "--- resolved APT source files ---"
      for f in ${APT_FILES[@]}; do [ -e "$f" ] && echo "  - $f"; done
      echo "--- env summary ---"
      echo "APT_FORCE_DE_MIRROR=${APT_FORCE_DE_MIRROR:-} ID=${ID:-} VERSION_CODENAME=${VERSION_CODENAME:-} UBUNTU_CODENAME=${UBUNTU_CODENAME:-}"
      echo "--- apt sources (pre) ---"
      for f in ${APT_FILES[@]}; do
        [ -e "$f" ] || continue
        echo "### $f"
        grep -nE '^(deb|deb-src)|^(Types|URIs|Suites|Components)=' "$f" || sed -n '1,40p' "$f" || true
      done
      echo "--- rewrite mode decision ---"
      AUTOPICK="${APT_AUTOPICK_MIRROR:-}"
      if [ "${APT_FORCE_DE_MIRROR:-}" = "auto" ]; then AUTOPICK=1; fi
      if [ "${AUTOPICK}" = "1" ]; then
        echo "Mode=AUTO_PICK OS=${ID:-unknown}"
        if [ "${ID:-}" = "ubuntu" ] && command -v curl >/dev/null 2>&1; then
          CODE_NAME="${UBUNTU_CODENAME:-${VERSION_CODENAME:-}}"
          LIST_URL="https://mirrors.ubuntu.com/mirrors.txt"
          echo "Fetching mirror list: $LIST_URL"
          MIRRORS=$(curl -fsSL "$LIST_URL" | grep -E '^https?://.+' | sed 's#/*$##' | head -n 20 || true)
          BEST_URL=""; BEST_TIME="9999"
          echo "Testing up to 20 mirrors for ${CODE_NAME} InRelease"
          for m in $MIRRORS; do
            TEST_URL="$m/dists/${CODE_NAME}/InRelease"
            RES=$(curl -m 3 --connect-timeout 2 -o /dev/null -s -w '%{time_total} %{http_code}' "$TEST_URL" || echo "9.999 000")
            TME=${RES%% *}; CODE=${RES##* }
            echo "  $(printf '%6s' "$TME")s  $CODE  $m"
            if [ "$CODE" = "200" ]; then
              BETTER=$(awk -v a="$TME" -v b="$BEST_TIME" 'BEGIN{print (a<b)?"1":"0"}')
              if [ "$BETTER" = "1" ]; then BEST_TIME="$TME"; BEST_URL="$m"; fi
            fi
          done
          if [ -n "$BEST_URL" ]; then
            MIRROR_URL="${BEST_URL}"
            echo "Selected fastest: $MIRROR_URL (time=${BEST_TIME}s)"
            for f in ${APT_FILES[@]}; do
              [ -e "$f" ] || continue
              # Replace any Ubuntu archive base with selected mirror
              sed -i -E "s#https?://[^ ]*/ubuntu#${MIRROR_URL}#g" "$f" || true
              sed -i -E "s#mirror://mirrors\.ubuntu\.com/mirrors\.txt#${MIRROR_URL}#g" "$f" || true
            done
          else
            echo "Autopick failed to find a working mirror; falling back to mirror list."
            AUTOPICK=0
          fi
        else
          echo "Autopick not available (non-Ubuntu or curl missing); falling back."
          AUTOPICK=0
        fi
      fi
      if [ "${AUTOPICK}" != "1" ] && [ "${APT_FORCE_DE_MIRROR:-}" = "1" ]; then
        echo "Mode=FORCED_MIRROR OS=${ID:-unknown}"
        if [ "${ID:-}" = "ubuntu" ]; then
          MIRROR_URL="http://de.archive.ubuntu.com/ubuntu"
          for f in ${APT_FILES[@]}; do
            [ -e "$f" ] || continue
            sed -i -E "s#https?://[^ ]*ubuntu.com/ubuntu#${MIRROR_URL}#g" "$f" || true
            sed -i -E "s#mirror://mirrors\.ubuntu\.com/mirrors\.txt#${MIRROR_URL}#g" "$f" || true
          done
        elif [ "${ID:-}" = "debian" ]; then
          MIRROR_URL="http://ftp.de.debian.org/debian"
          for f in ${APT_FILES[@]}; do
            [ -e "$f" ] || continue
            sed -i -E "s#https?://(deb|ftp)[^ ]*debian.org/debian#${MIRROR_URL}#g" "$f" || true
            sed -i -E "s#mirror://mirrors\.debian\.org/debian#${MIRROR_URL}#g" "$f" || true
          done
        fi
      elif [ "${AUTOPICK}" != "1" ]; then
        echo "Mode=MIRROR_LIST OS=${ID:-unknown}"
        if [ "${ID:-}" = "ubuntu" ]; then
          for f in ${APT_FILES[@]}; do [ -e "$f" ] && sed -i -E 's#https?://[^ ]*ubuntu.com/ubuntu#mirror://mirrors.ubuntu.com/mirrors.txt#g' "$f" || true; done
        elif [ "${ID:-}" = "debian" ]; then
          for f in ${APT_FILES[@]}; do [ -e "$f" ] && sed -i -E 's#https?://(deb|ftp)[^ ]*debian.org/debian#mirror://mirrors.debian.org/debian#g' "$f" || true; done
        fi
      fi
      echo "--- apt sources (post) ---"
      for f in ${APT_FILES[@]}; do
        [ -e "$f" ] || continue
        echo "### $f"
        grep -nE '^(deb|deb-src)|^(Types|URIs|Suites|Components)=' "$f" || sed -n '1,40p' "$f" || true
      done
      # Show which mirror hosts remain after rewriting, to aid debugging
      echo "APT_FORCE_DE_MIRROR=${APT_FORCE_DE_MIRROR:-} ID=${ID:-} VERSION_CODENAME=${VERSION_CODENAME:-}"
      grep -R "archive\.ubuntu\.com/ubuntu\|ubuntu\.com/ubuntu\|debian\.org/debian\|mirrors\.ubuntu\.com\|mirrors\.debian\.org" -n /etc/apt || true
      echo "--- apt origins (apt-cache policy) ---"
      apt-cache policy | sed -n '1,120p' || true
      printf 'Acquire::Retries "5";\nAcquire::http::Timeout "30";\nAcquire::https::Timeout "30";\nAcquire::http::Pipeline-Depth "0";\n' > /etc/apt/apt.conf.d/99retries
    - end_section apt_mirrors

    - start_section install_linux_packages "Installing missing Linux packages"
    - mkdir -pv $APT_CACHE_DIR ccache $R_LIBS_USER
    - apt-get -o Acquire::Retries=5 -o Acquire::http::Timeout=30 -o Acquire::https::Timeout=30 update
    - apt-get install --no-install-recommends -o dir::cache::archives="$APT_CACHE_DIR" -y libasound2t64 npm curl ccache 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 ghostscript inkscape scour poppler-utils qpdf fonts-stix
    # The distro Node (18, EOL) is too old for current tooling. Install the
    # current Node.js LTS (24.x) from the official tarball into /usr/local, which
    # precedes /usr/bin on PATH so `node`/`npx` resolve to it. We deliberately do
    # NOT use NodeSource/apt: its `nodejs` package does not satisfy `nodejs:any`,
    # which breaks the distro `libnode-dev`/`node-acorn` sysdeps pak installs later.
    - NODE_TARBALL=$(curl -fsSL https://nodejs.org/dist/latest-v24.x/ | grep -oE 'node-v24\.[0-9]+\.[0-9]+-linux-x64\.tar\.gz' | head -n1)
    - curl -fsSL "https://nodejs.org/dist/latest-v24.x/$NODE_TARBALL" | tar -xz -C /usr/local --strip-components=1
    - node --version
    - npx @puppeteer/browsers install chrome-headless-shell@stable
    - export CHROME=$(find ~+ -name chrome-headless-shell -type f)
    - echo "CHROME=$CHROME"
    - ln -s $CHROME /usr/bin/google-chrome
    - ln -s $(which ccache) /usr/local/sbin/gcc
    - ln -s $(which ccache) /usr/local/sbin/g++
    - locale-gen de_DE.utf8 en_GB.utf8 en_US.utf8
    - end_section install_linux_packages

    - start_section testing_chromium "Testing chrome"
    - google-chrome --version
    - end_section testing_chromium

    - start_section install_fonts "Installing Fira, Twemoji and emoji fonts"
    - curl -Ls https://github.com/mozilla/Fira/archive/refs/tags/4.202.tar.gz | tar -C /usr/share/fonts -zx --wildcards "*.otf"
    - curl -Ls https://github.com/13rac1/twemoji-color-font/releases/download/v15.1.0/TwitterColorEmoji-SVGinOT-Linux-15.1.0.tar.gz | tar -C /usr/share/fonts -zx --wildcards "*.ttf"
    - apt-get install --no-install-recommends -o dir::cache::archives="$APT_CACHE_DIR" -y fonts-noto-color-emoji fonts-symbola
    - fc-cache
    - end_section install_fonts

    - start_section install_r_packages "Installing missing R packages"
#    - echo -e 'local({r <- getOption("repos")\n r["CRAN"] <- "https://cloud.r-project.org"\n options(repos=r)})' > ~/.Rprofile
    - echo "options(Ncpus=$(nproc))" >> ~/.Rprofile
    - R -e "install.packages('pak', dependencies=TRUE)"
    - R -e "pak::pak(c('devtools', 'scales', 'sp', 'raster', 'kableExtra', 'DT', 'svglite', 'qrcode', 'ggthemes', 'patchwork', 'pagedown'), dependencies=TRUE)"
    - R -e 'devtools::install_git("https://korap.ids-mannheim.de/gerrit/IDS-Mannheim/idsThemeR", dependencies=TRUE)'
    - R -e 'devtools::install_git("https://korap.ids-mannheim.de/gerrit/IDS-Mannheim/posterdown", dependencies=TRUE)'
    - end_section install_r_packages

    - start_section testing_html2pdf "Testing PDF export"
    - ./ci/html2pdf https://google.com
    - ls -l ./google.pdf
    - end_section testing_html2pdf

  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('$SOURCE_FILE', output_format='posterdown.ids::posterdown_ids', output_dir='target')"
    - export SVG=target/$(basename $SOURCE_FILE .Rmd).svg
    - export HTML=target/$(basename $SOURCE_FILE .Rmd).html
    - export PDF=target/$(basename $SOURCE_FILE .Rmd).pdf
    - ./ci/html2pdf $HTML $PDF 1
    # Variant for printing on fabric, where solid black bleeds out: replace all
    # vector black by 15% grey (keeps QR codes scannable and text crisp).
    - ./ci/pdf-lighten-black $PDF target/$(basename $SOURCE_FILE .Rmd)_fabric.pdf
    - gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sPAPERSIZE=a1 -dFIXEDMEDIA -dPDFFitPage -sOutputFile=target/$(basename $SOURCE_FILE .Rmd)_a1.pdf $PDF
    - inkscape -b white --pdf-poppler -o $SVG $PDF || true
    - scour -i $SVG -o target/skeleton_optimized.svg --enable-viewboxing --enable-id-stripping --shorten-ids --indent=none
    - end_section render
