From 5ad395846a3c6dcf83b4cbcfc204e5502b43df29 Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Wed, 5 Jan 2022 10:26:34 +0700 Subject: [PATCH 1/9] pdf build, epub-mobi convert and artifacts in ci no explicit targets on build install texlive-xetex install texlive-fonts-recommended install texlive-fonts-extra mobi artifact --- .github/workflows/build.yml | 50 +++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index da3a44144..8ebce81ff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,6 +27,14 @@ jobs: - name: Install pandoc run: brew install pandoc + - name: Install Calibre + if: runner.os == 'Linux' + run: sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin + + - name: Install LaTeX dependencies + if: runner.os == 'Linux' + run: sudo apt-get update && sudo apt-get -y install texlive-xetex texlive-science texlive-fonts-extra + - name: Use OCaml ${{ matrix.ocaml-compiler }} uses: ocaml/setup-ocaml@v2 with: @@ -37,9 +45,9 @@ jobs: if: ${{ matrix.os == 'macos-latest' }} run: opam install dune>=2.9.0 - - name: Build HTML book + - name: Build HTML and PDF book if: runner.os == 'Linux' - run: opam exec -- dune build @site + run: opam exec -- dune build @site @pdf - name: Run promotion tests run: opam exec -- dune runtest @@ -50,3 +58,41 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./_build/default/static + + - name: Upload artifacts (html, pdf, md, tex) + if: runner.os == 'Linux' + uses: actions/upload-artifact@v2 + with: + name: static + path: ./_build/default/static + + - name: Upload PDF artifact + if: runner.os == 'Linux' + uses: actions/upload-artifact@v2 + with: + name: book.pdf + path: ./_build/default/static/book.pdf + + - name: Convert to EPUB + if: runner.os == 'Linux' + working-directory: ./_build/default/static + run: pandoc --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo.exe --metadata-file=../book/book.yml --listings -o book.epub -t epub -s book.md + + - name: Upload EPUB artifact + if: runner.os == 'Linux' + uses: actions/upload-artifact@v2 + with: + name: book.epub + path: ./_build/default/static/book.epub + + - name: Convert to MOBI + if: runner.os == 'Linux' + working-directory: ./_build/default/static + run: ebook-convert book.epub book.mobi + + - name: Upload MOBI artifact + if: runner.os == 'Linux' + uses: actions/upload-artifact@v2 + with: + name: book.mobi + path: ./_build/default/static/book.mobi From 10de9ef7c688c2be94c16c7098cf81598fb8ea39 Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Mon, 10 Jan 2022 21:30:31 +0700 Subject: [PATCH 2/9] Pandoc filter for epub --- .github/workflows/build.yml | 6 +++--- bin/pandoc-rwo/dune | 19 +++++++++++++++---- bin/pandoc-rwo/pandoc_rwo_epub.ml | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 bin/pandoc-rwo/pandoc_rwo_epub.ml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8ebce81ff..89d31c563 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,9 +45,9 @@ jobs: if: ${{ matrix.os == 'macos-latest' }} run: opam install dune>=2.9.0 - - name: Build HTML and PDF book + - name: Build book if: runner.os == 'Linux' - run: opam exec -- dune build @site @pdf + run: opam exec -- dune build - name: Run promotion tests run: opam exec -- dune runtest @@ -76,7 +76,7 @@ jobs: - name: Convert to EPUB if: runner.os == 'Linux' working-directory: ./_build/default/static - run: pandoc --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo.exe --metadata-file=../book/book.yml --listings -o book.epub -t epub -s book.md + run: pandoc --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo_epub.exe --metadata-file=../book/book.yml --listings -o book.epub -t epub -s book.md - name: Upload EPUB artifact if: runner.os == 'Linux' diff --git a/bin/pandoc-rwo/dune b/bin/pandoc-rwo/dune index 436920241..e3038b086 100644 --- a/bin/pandoc-rwo/dune +++ b/bin/pandoc-rwo/dune @@ -1,5 +1,16 @@ +(library + (name pandoc) + (modules pandoc) + (libraries yojson)) + (executable - (public_name pandoc-rwo) - (name pandoc_rwo) - (libraries yojson) -) + (public_name pandoc-rwo) + (name pandoc_rwo) + (modules pandoc_rwo) + (libraries yojson pandoc)) + +(executable + (public_name pandoc-rwo-epub) + (name pandoc_rwo_epub) + (modules pandoc_rwo_epub) + (libraries yojson pandoc)) diff --git a/bin/pandoc-rwo/pandoc_rwo_epub.ml b/bin/pandoc-rwo/pandoc_rwo_epub.ml new file mode 100644 index 000000000..5a61c0179 --- /dev/null +++ b/bin/pandoc-rwo/pandoc_rwo_epub.ml @@ -0,0 +1,17 @@ +(* Rewrite cross-references, untouch notes *) +let () = + let j = Yojson.Basic.from_channel stdin in + let p = Pandoc.of_json j in + let inline = function + (* handle xrefs like [Foo](bar.html#label){data-type="xref"} *) + | Pandoc.Link ((i,c,attr),body,(url,title)) as l -> begin + List.assoc_opt "data-type" attr |> function + | Some "xref" -> (* this is a cross-reference *) + let url = Scanf.sscanf url "%s@#%s" (fun _ t -> t) in + Some [Pandoc.Link ((i,c,attr),body,("#" ^ url,title))] + | Some _ | None -> Some [l] + end + | n -> Some [n] in + let p = Pandoc.map ~inline p in + let s = Yojson.Basic.pretty_to_string (Pandoc.to_json p) in + print_endline s From 0555b73b5353afff47c21967ebde215e62a0da23 Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Mon, 10 Jan 2022 21:33:09 +0700 Subject: [PATCH 3/9] Rename pandoc_rwo to pandoc_rwo_tex --- bin/pandoc-rwo/dune | 6 +++--- bin/pandoc-rwo/{pandoc_rwo.ml => pandoc_rwo_tex.ml} | 0 static-wip/dune | 4 ++-- static/dune | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) rename bin/pandoc-rwo/{pandoc_rwo.ml => pandoc_rwo_tex.ml} (100%) diff --git a/bin/pandoc-rwo/dune b/bin/pandoc-rwo/dune index e3038b086..61fd38047 100644 --- a/bin/pandoc-rwo/dune +++ b/bin/pandoc-rwo/dune @@ -4,9 +4,9 @@ (libraries yojson)) (executable - (public_name pandoc-rwo) - (name pandoc_rwo) - (modules pandoc_rwo) + (public_name pandoc-rwo-tex) + (name pandoc_rwo_tex) + (modules pandoc_rwo_tex) (libraries yojson pandoc)) (executable diff --git a/bin/pandoc-rwo/pandoc_rwo.ml b/bin/pandoc-rwo/pandoc_rwo_tex.ml similarity index 100% rename from bin/pandoc-rwo/pandoc_rwo.ml rename to bin/pandoc-rwo/pandoc_rwo_tex.ml diff --git a/static-wip/dune b/static-wip/dune index f4b0c9c3a..24a893c02 100644 --- a/static-wip/dune +++ b/static-wip/dune @@ -11,10 +11,10 @@ (rule (alias pdf-wip) (targets book.tex) - (deps ../bin/pandoc-rwo/pandoc_rwo.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) + (deps ../bin/pandoc-rwo/pandoc_rwo_tex.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) (action (progn - (system "pandoc --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo.exe --metadata-file=../book/book.yml --template ../book/cup-template.tex --listings -o book.tex -t latex -s book.md")))) + (system "pandoc --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo_tex.exe --metadata-file=../book/book.yml --template ../book/cup-template.tex --listings -o book.tex -t latex -s book.md")))) (rule (alias pdf-wip) diff --git a/static/dune b/static/dune index 210f08734..c70b46337 100644 --- a/static/dune +++ b/static/dune @@ -11,10 +11,10 @@ (rule (alias pdf) (targets book.tex) - (deps ../bin/pandoc-rwo/pandoc_rwo.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) + (deps ../bin/pandoc-rwo/pandoc_rwo_tex.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) (action (progn - (system "pandoc --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo.exe --metadata-file=../book/book.yml --template ../book/cup-template.tex --listings -o book.tex -t latex -s book.md")))) + (system "pandoc --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo_tex.exe --metadata-file=../book/book.yml --template ../book/cup-template.tex --listings -o book.tex -t latex -s book.md")))) (rule (alias pdf) From 09aeaf5c788e6849ce9682da65d45b8203701de0 Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Sat, 5 Feb 2022 14:54:45 +0700 Subject: [PATCH 4/9] trying to fix build: using explicit ubuntu version, older pandoc version, latest ocaml --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 89d31c563..82fc62e43 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,10 +13,10 @@ jobs: fail-fast: false matrix: os: - - ubuntu-latest + - ubuntu-20.04 # - macos-latest ocaml-compiler: - - 4.13.0 + - 4.13.1 runs-on: ${{ matrix.os }} @@ -25,7 +25,7 @@ jobs: uses: actions/checkout@v2 - name: Install pandoc - run: brew install pandoc + run: brew install pandoc@2.16.2 - name: Install Calibre if: runner.os == 'Linux' From 5b0cd63459aea2c6881b939599821043f021743a Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Sat, 5 Feb 2022 14:59:02 +0700 Subject: [PATCH 5/9] pandoc via apt-get --- .github/workflows/build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 82fc62e43..d1a927bda 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,6 @@ jobs: matrix: os: - ubuntu-20.04 - # - macos-latest ocaml-compiler: - 4.13.1 @@ -25,7 +24,7 @@ jobs: uses: actions/checkout@v2 - name: Install pandoc - run: brew install pandoc@2.16.2 + run: sudo apt-get -y install pandoc - name: Install Calibre if: runner.os == 'Linux' From 45e1765620626b75d85fb14bb16ed8bbf2b174dc Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Tue, 26 Apr 2022 20:56:00 +0700 Subject: [PATCH 6/9] Rename pandoc filter back --- bin/pandoc-rwo/dune | 6 +++--- bin/pandoc-rwo/{pandoc_rwo_tex.ml => pandoc_rwo.ml} | 0 static-wip/dune | 2 +- static/dune | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename bin/pandoc-rwo/{pandoc_rwo_tex.ml => pandoc_rwo.ml} (100%) diff --git a/bin/pandoc-rwo/dune b/bin/pandoc-rwo/dune index 61fd38047..e3038b086 100644 --- a/bin/pandoc-rwo/dune +++ b/bin/pandoc-rwo/dune @@ -4,9 +4,9 @@ (libraries yojson)) (executable - (public_name pandoc-rwo-tex) - (name pandoc_rwo_tex) - (modules pandoc_rwo_tex) + (public_name pandoc-rwo) + (name pandoc_rwo) + (modules pandoc_rwo) (libraries yojson pandoc)) (executable diff --git a/bin/pandoc-rwo/pandoc_rwo_tex.ml b/bin/pandoc-rwo/pandoc_rwo.ml similarity index 100% rename from bin/pandoc-rwo/pandoc_rwo_tex.ml rename to bin/pandoc-rwo/pandoc_rwo.ml diff --git a/static-wip/dune b/static-wip/dune index 8ec552a14..120cde8a8 100644 --- a/static-wip/dune +++ b/static-wip/dune @@ -11,7 +11,7 @@ (rule (alias pdf-wip) (targets book.tex) - (deps ../bin/pandoc-rwo/pandoc_rwo_tex.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) + (deps ../bin/pandoc-rwo/pandoc_rwo.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) (action (progn (system "pandoc -V links-as-notes=true --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo.exe --metadata-file=../book/book.yml --template ../book/cup-template.tex --listings -o book.tex -t latex -s book.md")))) diff --git a/static/dune b/static/dune index df7ddcc1e..58f9aadb1 100644 --- a/static/dune +++ b/static/dune @@ -11,7 +11,7 @@ (rule (alias pdf) (targets book.tex) - (deps ../bin/pandoc-rwo/pandoc_rwo_tex.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) + (deps ../bin/pandoc-rwo/pandoc_rwo.exe book.md EngD.cls colour-blind.sty ../book/book.yml ../book/cup-template.tex) (action (progn (system "pandoc -V links-as-notes=true --top-level-division=part --filter=../bin/pandoc-rwo/pandoc_rwo.exe --metadata-file=../book/book.yml --template ../book/cup-template.tex --listings -o book.tex -t latex -s book.md")))) From 9c153975543d1700c63e6ade89c01bb5200e4839 Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Tue, 26 Apr 2022 21:30:53 +0700 Subject: [PATCH 7/9] Build not only site --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a68ef19d..5d2ef9c40 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: run: opam install dune>=3.0.2 - name: Build HTML book - run: opam exec -- dune build @site + run: opam exec -- dune build - name: Deploy site uses: peaceiris/actions-gh-pages@v3 From 11f40bc1fcd7112e4e17eede21191d67e8ad2f69 Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Sun, 28 Aug 2022 20:59:31 +0700 Subject: [PATCH 8/9] ubuntu-20.04 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5d2ef9c40..64a2a712c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: - - ubuntu-latest + - ubuntu-20.04 ocaml-compiler: - 4.13.1 From e6fdaf8496731488584577d471a5aaf7687a25da Mon Sep 17 00:00:00 2001 From: Vladislav Prekel Date: Sun, 28 Aug 2022 21:02:31 +0700 Subject: [PATCH 9/9] no mobi --- .github/workflows/build.yml | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 64a2a712c..0642cfed2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: fail-fast: false matrix: os: - - ubuntu-20.04 + - ubuntu-latest ocaml-compiler: - 4.13.1 @@ -26,10 +26,6 @@ jobs: - name: Install pandoc run: sudo apt-get -y install pandoc - - name: Install Calibre - if: runner.os == 'Linux' - run: sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin - - name: Install LaTeX dependencies if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get -y install texlive-xetex texlive-science texlive-fonts-extra @@ -78,15 +74,3 @@ jobs: with: name: book.epub path: ./_build/default/static/book.epub - - - name: Convert to MOBI - if: runner.os == 'Linux' - working-directory: ./_build/default/static - run: ebook-convert book.epub book.mobi - - - name: Upload MOBI artifact - if: runner.os == 'Linux' - uses: actions/upload-artifact@v2 - with: - name: book.mobi - path: ./_build/default/static/book.mobi