#!/usr/bin/env bash

set -e
set -o pipefail

GAP=/build/gap/src/gap-4.11.0/bin/gap.sh
GAPARGS="-b -m 1g -x 80 -q -r --quitonbreak"
if [ "$1" == "nopdf" ]; then
  NOPDF=", \"nopdf\""
else
  NOPDF=""
fi
echo "--------------------"
echo "Building GAP manuals"
echo "--------------------"

"$GAP" $GAPARGS -A <<EOF
base:="/build/gap/src/gap-4.11.0";;
books:=["ref", "tut", "hpc", "dev"];;
latexOpts := rec(Maintitlesize := "\\\\fontsize{36}{38}\\\\selectfont");;
for run in [1,2] do
  for book in books do
    path := Concatenation(base, "/doc/", book);
    dir := Directory(path);

    # skip over missing manuals
    if not IsDirectoryPath(path) then
        continue;
    fi;

    Print("----------------------------\n");
    Print("Building GAP manual '",book,"' at ",path,"\n");
    Print("Run ",run," of 2\n");
    Print("----------------------------\n");

    # for the reference manual, extra list of source files to scan
    if book = "ref" then
        f := Filename(dir, "makedocreldata.g");
        Read(f);
        files := GAPInfo.ManualDataRef.files;
    else
        files := [];
    fi;

    if run = 2 then
        # create black&white version of manual (but only on second run)
        SetGapDocLaTeXOptions("nocolor", latexOpts);
        MakeGAPDocDoc( path, "main.xml", files, book, "../..", "MathJax" $NOPDF );;

        # Rename the generated black&white PDF
        f1 := Filename(dir, "manual.pdf");
        f2 := Filename(dir, "manual-bw.pdf");
        Exec(Concatenation("mv -f ", f1, " ", f2));

        # convert manual.six to manual.lab, to allow old-style package manuals
        # to reference the manual
        GAPDocManualLabFromSixFile( book, Filename(dir, "manual.six") );;

        #
        CopyHTMLStyleFiles(dir);
    fi;

    # create manuals with color
    SetGapDocLaTeXOptions("color", latexOpts);
    MakeGAPDocDoc( path, "main.xml", files, book, "../..", "MathJax" $NOPDF);;
  od;
od;
EOF
