diff --git a/Dockerfile b/Dockerfile index cbf38718..8996014e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,9 @@ ARG asciidoctor_revealjs_version=4.1.0 ARG kramdown_asciidoc_version=2.0.0 ARG asciidoctor_bibtex_version=0.8.0 ARG asciidoctor_kroki_version=0.5.0 +ARG nodejs_version=16.14.0-r0 +ARG asciidoctor_web_pdf_version=1.0.0-alpha.14 +ARG asciidoctor_kroki_npm_version=0.15.4 ENV ASCIIDOCTOR_VERSION=${asciidoctor_version} \ ASCIIDOCTOR_CONFLUENCE_VERSION=${asciidoctor_confluence_version} \ @@ -23,7 +26,10 @@ ENV ASCIIDOCTOR_VERSION=${asciidoctor_version} \ ASCIIDOCTOR_REVEALJS_VERSION=${asciidoctor_revealjs_version} \ KRAMDOWN_ASCIIDOC_VERSION=${kramdown_asciidoc_version} \ ASCIIDOCTOR_BIBTEX_VERSION=${asciidoctor_bibtex_version} \ - ASCIIDOCTOR_KROKI_VERSION=${asciidoctor_kroki_version} + ASCIIDOCTOR_KROKI_VERSION=${asciidoctor_kroki_version} \ + NODEJS_VERSION=${nodejs_version} \ + ASCIIDOCTOR_WEB_PDF_VERSION=${asciidoctor_web_pdf_version} \ + ASCIIDOCTOR_KROKI_NPM_VERSION=${asciidoctor_kroki_npm_version} # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Minimal image with asciidoctor @@ -100,7 +106,8 @@ RUN apk add --no-cache \ tzdata \ unzip \ which \ - font-noto-cjk + font-noto-cjk \ + nodejs # Installing Ruby Gems for additional functionality RUN apk add --no-cache --virtual .rubymakedepends \ @@ -142,6 +149,11 @@ RUN apk add --no-cache --virtual .pythonmakedepends \ seqdiag \ && apk del -r --no-cache .pythonmakedepends +# Installing Nodejs dependencies for additional functionality +RUN npm install --global @asciidoctor/core \ + asciidoctor-pdf@${ASCIIDOCTOR_WEB_PDF_VERSION} \ + asciidoctor-kroki@${ASCIIDOCTOR_KROKI_NPM_VERSION} + COPY --from=build-haskell root/.cabal/bin/erd /bin/ WORKDIR /documents diff --git a/README.adoc b/README.adoc index f1cc4094..f52dfab8 100644 --- a/README.adoc +++ b/README.adoc @@ -10,6 +10,15 @@ :KRAMDOWN_ASCIIDOC_VERSION: 2.0.0 :ASCIIDOCTOR_BIBTEX_VERSION: 0.8.0 :ASCIIDOCTOR_KROKI_VERSION: 0.5.0 +:NODEJS_VERSION: 16.14.0 +:ASCIIDOCTOR_WEB_PDF_VERSION: 1.0.0-alpha.14 +ifdef::env-github[] +:tip-caption: :bulb: +:note-caption: :information_source: +:important-caption: :heavy_exclamation_mark: +:caution-caption: :fire: +:warning-caption: :warning: +endif::[] = Asciidoctor Docker Container :source-highlighter: coderay @@ -34,6 +43,7 @@ This Docker image provides: * https://github.com/asciidoctor/asciidoctor-confluence[Asciidoctor Confluence] {ASCIIDOCTOR_CONFLUENCE_VERSION} * https://github.com/asciidoctor/asciidoctor-bibtex[Asciidoctor Bibtex] {ASCIIDOCTOR_BIBTEX_VERSION} * https://github.com/Mogztter/asciidoctor-kroki[Asciidoctor Kroki] {ASCIIDOCTOR_KROKI_VERSION} +* https://github.com/Mogztter/asciidoctor-web-pdf[Asciidoctor Web PDF] {ASCIIDOCTOR_WEB_PDF_VERSION} -- This is an unofficial project. This image uses Alpine Linux {ALPINE_VERSION} as base image. @@ -111,6 +121,19 @@ asciidoctor-revealjs -a revealjsdir=https://cdnjs.cloudflare.com/ajax/libs/revea docker run --rm -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf index.adoc ---- +* To convert files with Asciidoctor Web PDF: ++ +[source, bash] +---- +# 1. generate a PDF document from basic example +asciidoctor-web-pdf document.adoc +# Generate the file `document.pdf` + +# 2. generate an PDF document with a diagram +asciidoctor-web-pdf --require asciidoctor-kroki document-with-diagram.adoc +# Generate the file `document-with-diagram.pdf` +---- + == How to contribute / do it yourself? === Requirements diff --git a/README.md b/README.md index 4e12148e..69f2d82f 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ This Docker image provides: - [Asciidoctor Kroki](https://github.com/Mogztter/asciidoctor-kroki) 0.5.0 +- [Asciidoctor Web PDF](https://github.com/Mogztter/asciidoctor-web-pdf) 1.0.0-alpha.14 -- This is an unofficial project. + This image uses Alpine Linux 3.13.5 as base image. ## How to use it @@ -71,6 +73,17 @@ You can find several examples below. docker run --rm -v $(pwd):/documents/ asciidoctor/docker-asciidoctor asciidoctor-pdf index.adoc +- To convert files with Asciidoctor Web PDF: + + # 1. generate a PDF document from basic example + asciidoctor-web-pdf document.adoc + # Generate the file `document.pdf` + + # 2. generate an PDF document with a diagram + asciidoctor-web-pdf --require asciidoctor-kroki document-with-diagram.adoc + # Generate the file `document-with-diagram.pdf` + + ## How to contribute / do it yourself? ### Requirements diff --git a/tests/asciidoctor.bats b/tests/asciidoctor.bats index aa01458a..61e58dfc 100644 --- a/tests/asciidoctor.bats +++ b/tests/asciidoctor.bats @@ -13,6 +13,8 @@ ASCIIDOCTOR_REVEALJS_VERSION=4.1.0 KRAMDOWN_ASCIIDOC_VERSION=2.0.0 ASCIIDOCTOR_BIBTEX_VERSION=0.8.0 ASCIIDOCTOR_KROKI_VERSION=0.5.0 +NODEJS_VERSION=16.14.0 +ASCIIDOCTOR_WEB_PDF_VERSION=1.0.0-alpha.14 DOCKER_IMAGE_NAME_TO_TEST="${IMAGE_NAME:-asciidoctor}" clean_generated_files() { @@ -48,6 +50,17 @@ teardown() { | grep "${ASCIIDOCTOR_PDF_VERSION}" } +@test "asciidoctor-web-pdf is installed and in version ${ASCIIDOCTOR_WEB_PDF_VERSION}" { + docker run -t --rm "${DOCKER_IMAGE_NAME_TO_TEST}" asciidoctor-web-pdf -v \ + | grep "Asciidoctor Web PDF" | grep "${ASCIIDOCTOR_VERSION}" \ + | grep "${ASCIIDOCTOR_WEB_PDF_VERSION}" +} + +@test "Node.js is installed and in version ${NODEJS_VERSION}" { + docker run -t --rm "${DOCKER_IMAGE_NAME_TO_TEST}" node -v \ + | grep "${NODEJS_VERSION}" +} + @test "asciidoctor-revealjs is callable without error" { docker run -t --rm "${DOCKER_IMAGE_NAME_TO_TEST}" asciidoctor-revealjs -v \ | grep "${ASCIIDOCTOR_REVEALJS_VERSION}" @@ -120,6 +133,13 @@ teardown() { /documents/fixtures/basic-example.adoc } +@test "We can generate a PDF document from basic example(Asciidoctor Web PDF)" { + docker run -t --rm \ + -v "${BATS_TEST_DIRNAME}":/documents/ \ + "${DOCKER_IMAGE_NAME_TO_TEST}" \ + asciidoctor-web-pdf -D /documents/tmp /documents/fixtures/basic-example.adoc +} + @test "We can generate an FB2 document from basic example without errors/warnings" { docker run -t --rm \ @@ -285,6 +305,14 @@ teardown() { /documents/fixtures/samples-syntax-highlight/*.adoc } +@test "We can generate PDF documents with different syntax-colored codes(Asciidoctor Web PDF)" { + docker run -t --rm \ + -v "${BATS_TEST_DIRNAME}":/documents/ \ + "${DOCKER_IMAGE_NAME_TO_TEST}" \ + asciidoctor-web-pdf -D /documents/tmp \ + /documents/fixtures/samples-syntax-highlight/*.adoc +} + @test "We can convert a Markdown file to an AsciiDoc file" { docker run -t --rm \ -v "${BATS_TEST_DIRNAME}":/documents/ \ diff --git a/updatecli/updatecli.d/asciidoctor-web-pdf.yml b/updatecli/updatecli.d/asciidoctor-web-pdf.yml new file mode 100644 index 00000000..c9e258dc --- /dev/null +++ b/updatecli/updatecli.d/asciidoctor-web-pdf.yml @@ -0,0 +1,90 @@ +--- +title: "Bump Asciidoctor-Web-PDF version" + +scms: + default: + kind: github + spec: + user: "{{ .github.user }}" + email: "{{ .github.email }}" + owner: "{{ requiredEnv .github.owner }}" + repository: "{{ requiredEnv .github.repository }}" + token: "{{ requiredEnv .github.token }}" + username: "{{ .github.username }}" + branch: "{{ .github.branch }}" + +sources: + latestVersion: + kind: githubRelease + name: "Get the latest Asciidoctor-Web-PDF version" + spec: + owner: "Mogztter" + repository: "asciidoctor-web-pdf" + token: "{{ requiredEnv .github.token }}" + username: "{{ .github.username }}" + versionFilter: + kind: latest + transformers: + - trimPrefix: "v" + +conditions: + testDockerfileArgVersion: + name: "Does the Dockerfile have an ARG instruction which key is asciidoctor_web_pdf_version?" + kind: dockerfile + spec: + file: Dockerfile + instruction: + keyword: "ARG" + matcher: "asciidoctor_web_pdf_version" + testVersionInReadme: + name: "Does the README.adoc have a variable asciidoctor_web_pdf_version" + kind: file + spec: + file: README.adoc + matchPattern: '(?m:^:ASCIIDOCTOR_WEB_PDF_VERSION:.*)' + testVersionInTestHarness: + name: "Does the test harness have variable ASCIIDOCTOR_WEB_PDF_VERSION" + kind: file + spec: + file: tests/asciidoctor.bats + matchPattern: '(?m:^ASCIIDOCTOR_WEB_PDF_VERSION=.*)' + +targets: + updateDockerfile: + name: "Update the value of ARG asciidoctor_web_pdf_version in the Dockerfile" + kind: dockerfile + spec: + file: Dockerfile + instruction: + keyword: "ARG" + matcher: "asciidoctor_web_pdf_version" + scmID: default + updateTestHarness: + name: "Update the key ASCIIDOCTOR_WEB_PDF_VERSION in the test harness" + kind: file + spec: + file: tests/asciidoctor.bats + matchPattern: '(?m:^ASCIIDOCTOR_WEB_PDF_VERSION=.*)' + content: 'ASCIIDOCTOR_WEB_PDF_VERSION={{ source `latestVersion` }}' + scmID: default + updateReadme: + name: "Update the key ASCIIDOCTOR_WEB_PDF_VERSION in the README.adoc file" + kind: file + spec: + file: README.adoc + matchPattern: '(?m:^:ASCIIDOCTOR_WEB_PDF_VERSION:.*)' + content: ':ASCIIDOCTOR_WEB_PDF_VERSION: {{ source `latestVersion` }}' + scmID: default + +pullrequests: + default: + kind: github + scmID: default + targets: + - updateDockerfile + - updateTestHarness + - updateReadme + spec: + labels: + - chore + - dependencies diff --git a/updatecli/updatecli.d/nodejs.yml b/updatecli/updatecli.d/nodejs.yml new file mode 100644 index 00000000..a48da513 --- /dev/null +++ b/updatecli/updatecli.d/nodejs.yml @@ -0,0 +1,92 @@ +--- +title: "Bump Node.js version" + +scms: + default: + kind: github + spec: + user: "{{ .github.user }}" + email: "{{ .github.email }}" + owner: "{{ requiredEnv .github.owner }}" + repository: "{{ requiredEnv .github.repository }}" + token: "{{ requiredEnv .github.token }}" + username: "{{ .github.username }}" + branch: "{{ .github.branch }}" + +sources: + latestVersion: + kind: githubRelease + name: "Get the latest Node.js version" + spec: + owner: "nodejs" + repository: "node" + token: "{{ requiredEnv .github.token }}" + username: "{{ .github.username }}" + versionFilter: + kind: semver + # As per https://nodejs.org/en/about/releases/, the LTS line for nodejs is v16.x.y. Semantic version fixes the major version and get the latest minor . patch + pattern: ~16 + transformers: + - trimPrefix: "v" + +conditions: + testDockerfileArgVersion: + name: "Does the Dockerfile have an ARG instruction which key is nodejs_version?" + kind: dockerfile + spec: + file: Dockerfile + instruction: + keyword: "ARG" + matcher: "nodejs_version" + testVersionInReadme: + name: "Does the README.adoc have a variable NODEJS_VERSION" + kind: file + spec: + file: README.adoc + matchPattern: '(?m:^:NODEJS_VERSION:.*)' + testVersionInTestHarness: + name: "Does the test harness have variable NODEJS_VERSION" + kind: file + spec: + file: tests/asciidoctor.bats + matchPattern: '(?m:^NODEJS_VERSION=.*)' + +targets: + updateDockerfile: + name: "Update the value of ARG nodejs_version in the Dockerfile" + kind: dockerfile + spec: + file: Dockerfile + instruction: + keyword: "ARG" + matcher: "nodejs_version" + scmID: default + updateTestHarness: + name: "Update the key NODEJS_VERSION in the test harness" + kind: file + spec: + file: tests/asciidoctor.bats + matchPattern: '(?m:^NODEJS_VERSION=.*)' + content: 'NODEJS_VERSION={{ source `latestVersion` }}' + scmID: default + updateReadme: + name: "Update the key NODEJS_VERSION in the README.adoc file" + kind: file + spec: + file: README.adoc + matchPattern: '(?m:^:NODEJS_VERSION:.*)' + content: ':NODEJS_VERSION: {{ source `latestVersion` }}' + scmID: default + +pullrequests: + default: + kind: github + scmID: default + targets: + - updateDockerfile + - updateTestHarness + - updateReadme + spec: + labels: + - chore + - dependencies