Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add symbolator #1566

Merged
merged 11 commits into from
Jul 14, 2023
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ jobs:
- name: Install GraphViz
run: sudo apt-get install graphviz -y

- name: Install Symbolator
run: |
wget https://github.com/zebreus/symbolator/releases/download/v1.2.1/symbolator.AppImage
chmod +x symbolator.AppImage
mv symbolator.AppImage /usr/local/bin/symbolator
zebreus marked this conversation as resolved.
Show resolved Hide resolved

- name: Set up JDK 11
uses: actions/setup-java@v3
with:
Expand Down
2 changes: 1 addition & 1 deletion DOCKERHUB.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Convert plain text diagrams to images !

Kroki provides a unified API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), D2, DBML, Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, SvgBob, UMLet, Vega, Vega-Lite, WaveDrom... and more to come!
Kroki provides a unified API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), D2, DBML, Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, SvgBob, Symbolator, UMLet, Vega, Vega-Lite, WaveDrom... and more to come!

## Getting Started

Expand Down
2 changes: 1 addition & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ image:https://github.com/yuzutech/kroki/workflows/CI/badge.svg?branch=master[Git
image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[Zulip chat, link=https://kroki.zulipchat.com/]
endif::[]

{uri-kroki}[Kroki] provides a unified API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), D2, DBML, Diagrams.net (experimental), Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, SvgBob, UMLet, Vega, Vega-Lite, WaveDrom and WireViz... and more to come!
{uri-kroki}[Kroki] provides a unified API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag), BPMN, Bytefield, C4 (with PlantUML), D2, DBML, Diagrams.net (experimental), Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, SvgBob, Symbolator, UMLet, Vega, Vega-Lite, WaveDrom and WireViz... and more to come!

== Quickstart

Expand Down
22 changes: 22 additions & 0 deletions blockdiag/examples.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,28 @@ def sample(service, source):

sample('ditaa', ditaa)

# Symbolator
section('Symbolator')
symbolator = """
module demo_device #(
//# {{}}
parameter SIZE = 8,
parameter RESET_ACTIVE_LEVEL = 1
) (
//# {{clocks|Clocking}}
input wire clock,
//# {{control|Control signals}}
input wire reset,
input wire enable,
//# {{data|Data ports}}
input wire [SIZE-1:0] data_in,
output wire [SIZE-1:0] data_out
);
// ...
endmodule
"""

sample('symbolator', symbolator)

section('C4 PlantUML')
context_bigbank = """
Expand Down
16 changes: 16 additions & 0 deletions ci/tests/diagrams/component.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module demo_device #(
//# {{}}
parameter SIZE = 8,
parameter RESET_ACTIVE_LEVEL = 1
) (
//# {{clocks|Clocking}}
input wire clock,
//# {{control|Control signals}}
input wire reset,
input wire enable,
//# {{data|Data ports}}
input wire [SIZE-1:0] data_in,
output wire [SIZE-1:0] data_out
);
// ...
endmodule
111 changes: 56 additions & 55 deletions ci/tests/smoke.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,42 @@ import * as url from 'url'
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))

const tests = [
{engine: 'graphviz', file: 'hello.dot', options: {}, outputFormat: ['svg', 'jpeg']},
{engine: 'dot', file: 'hello.dot', options: {}, outputFormat: ['svg', 'jpeg']},
{engine: 'blockdiag', file: 'kroki.diag', options: {}, outputFormat: ['svg', 'png']},
{engine: 'seqdiag', file: 'sequence.diag', options: {}, outputFormat: ['svg', 'png']},
{engine: 'actdiag', file: 'actions.diag', options: {}, outputFormat: ['svg', 'png']},
{engine: 'nwdiag', file: 'network.diag', options: {}, outputFormat: ['svg', 'png']},
{engine: 'c4plantuml', file: 'banking-system.puml', options: {}, outputFormat: ['svg', 'pdf', 'png', 'txt']},
{engine: 'dbml', file: 'dbml.dbml', options: {}, outputFormat: ['svg']},
{engine: 'ditaa', file: 'components.ditaa', options: {}, outputFormat: ['svg']},
{engine: 'erd', file: 'schema.erd', options: {}, outputFormat: ['svg']},
{engine: 'mermaid', file: 'contribute.mmd', options: {}, outputFormat: ['svg']},
{engine: 'bpmn', file: 'example.bpmn', options: {}, outputFormat: ['svg']},
{engine: 'plantuml', file: 'architecture.puml', options: {}, outputFormat: ['svg', 'pdf', 'png', 'txt']},
{engine: 'svgbob', file: 'cloud.bob', options: {}, outputFormat: ['svg']},
{engine: 'nomnoml', file: 'pirate.nomnoml', options: {}, outputFormat: ['svg']},
{engine: 'packetdiag', file: 'packet.diag', options: {}, outputFormat: ['svg', 'png']},
{engine: 'rackdiag', file: 'rack.diag', options: {}, outputFormat: ['svg', 'png']},
{engine: 'vega', file: 'bar-chart.vega', options: {}, outputFormat: ['svg', 'png', 'pdf']},
{engine: 'vegalite', file: 'discretizing-scale.vlite', options: {}, outputFormat: ['svg', 'png', 'pdf']},
{engine: 'wavedrom', file: 'wavedrom.json5', options: {}, outputFormat: ['svg']},
{engine: 'wavedrom', file: 'bitfield.json5', options: {}, outputFormat: ['svg']},
{engine: 'bytefield', file: 'bytefield.bf', options: {}, outputFormat: ['svg']},
{engine: 'umlet', file: 'umlet.xml', options: {}, outputFormat: ['svg']},
{engine: 'excalidraw', file: 'venn.excalidraw', options: {}, outputFormat: ['svg']},
{engine: 'pikchr', file: 'sqlite-architecture.pikchr', options: {}, outputFormat: ['svg']},
{engine: 'structurizr', file: 'gettingstarted.structurizr', options: {}, outputFormat: ['svg']},
{engine: 'diagramsnet', file: 'diagramsnet-infography.xml', options: {}, outputFormat: ['svg', 'png']},
{engine: 'diagramsnet', file: 'diagramsnet-mindmap.xml', options: {}, outputFormat: ['svg', 'png']},
{engine: 'diagramsnet', file: 'diagramsnet-network.xml', options: {}, outputFormat: ['svg', 'png']},
{engine: 'diagramsnet', file: 'diagramsnet-ui.xml', options: {}, outputFormat: ['svg', 'png']},
{engine: 'diagramsnet', file: 'diagramsnet-venn.xml', options: {}, outputFormat: ['svg', 'png']},
{engine: 'd2', file: 'connections.d2', options: {}, outputFormat: ['svg']},
{engine: 'd2', file: 'connections.d2', options: {sketch: 'true'}, outputFormat: ['svg']},
{engine: 'wireviz', file: 'wireviz.yaml', options: {}, outputFormat: ['svg', 'png']},
{engine: 'tikz', file: 'periodic-table.tex', options: {}, outputFormat: ['jpeg', 'pdf', 'png', 'svg']}
{ engine: 'graphviz', file: 'hello.dot', options: {}, outputFormat: ['svg', 'jpeg'] },
{ engine: 'dot', file: 'hello.dot', options: {}, outputFormat: ['svg', 'jpeg'] },
{ engine: 'blockdiag', file: 'kroki.diag', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'seqdiag', file: 'sequence.diag', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'actdiag', file: 'actions.diag', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'nwdiag', file: 'network.diag', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'c4plantuml', file: 'banking-system.puml', options: {}, outputFormat: ['svg', 'pdf', 'png', 'txt'] },
{ engine: 'dbml', file: 'dbml.dbml', options: {}, outputFormat: ['svg'] },
{ engine: 'ditaa', file: 'components.ditaa', options: {}, outputFormat: ['svg'] },
{ engine: 'symbolator', file: 'component.sv', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'erd', file: 'schema.erd', options: {}, outputFormat: ['svg'] },
{ engine: 'mermaid', file: 'contribute.mmd', options: {}, outputFormat: ['svg'] },
{ engine: 'bpmn', file: 'example.bpmn', options: {}, outputFormat: ['svg'] },
{ engine: 'plantuml', file: 'architecture.puml', options: {}, outputFormat: ['svg', 'pdf', 'png', 'txt'] },
{ engine: 'svgbob', file: 'cloud.bob', options: {}, outputFormat: ['svg'] },
{ engine: 'nomnoml', file: 'pirate.nomnoml', options: {}, outputFormat: ['svg'] },
{ engine: 'packetdiag', file: 'packet.diag', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'rackdiag', file: 'rack.diag', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'vega', file: 'bar-chart.vega', options: {}, outputFormat: ['svg', 'png', 'pdf'] },
{ engine: 'vegalite', file: 'discretizing-scale.vlite', options: {}, outputFormat: ['svg', 'png', 'pdf'] },
{ engine: 'wavedrom', file: 'wavedrom.json5', options: {}, outputFormat: ['svg'] },
{ engine: 'wavedrom', file: 'bitfield.json5', options: {}, outputFormat: ['svg'] },
{ engine: 'bytefield', file: 'bytefield.bf', options: {}, outputFormat: ['svg'] },
{ engine: 'umlet', file: 'umlet.xml', options: {}, outputFormat: ['svg'] },
{ engine: 'excalidraw', file: 'venn.excalidraw', options: {}, outputFormat: ['svg'] },
{ engine: 'pikchr', file: 'sqlite-architecture.pikchr', options: {}, outputFormat: ['svg'] },
{ engine: 'structurizr', file: 'gettingstarted.structurizr', options: {}, outputFormat: ['svg'] },
{ engine: 'diagramsnet', file: 'diagramsnet-infography.xml', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'diagramsnet', file: 'diagramsnet-mindmap.xml', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'diagramsnet', file: 'diagramsnet-network.xml', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'diagramsnet', file: 'diagramsnet-ui.xml', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'diagramsnet', file: 'diagramsnet-venn.xml', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'd2', file: 'connections.d2', options: {}, outputFormat: ['svg'] },
{ engine: 'd2', file: 'connections.d2', options: { sketch: 'true' }, outputFormat: ['svg'] },
{ engine: 'wireviz', file: 'wireviz.yaml', options: {}, outputFormat: ['svg', 'png'] },
{ engine: 'tikz', file: 'periodic-table.tex', options: {}, outputFormat: ['jpeg', 'pdf', 'png', 'svg'] }
]

chai.use(chaiHttp)
Expand Down Expand Up @@ -95,7 +96,7 @@ describe('Diagrams', function () {
describe('PlantUML native image', function () {
this.timeout(15000)
it('plantuml (native image) should convert class diagram (issue#1546)', async () => {
const testCase = {engine: 'plantuml', file: 'class.puml'}
const testCase = { engine: 'plantuml', file: 'class.puml' }
const response = await sendRequest(testCase, 'svg')
try {
expect(response.status).to.equal(200)
Expand All @@ -109,7 +110,7 @@ describe('PlantUML native image', function () {
describe('CJK font', function () {
this.timeout(15000)
it('plantuml should compute correct text length (issue#574)', async () => {
const testCase = {engine: 'plantuml', file: 'chinese.puml'}
const testCase = { engine: 'plantuml', file: 'chinese.puml' }
const response = await sendRequest(testCase, 'svg')
try {
expect(response.body.toString('utf8')).to.include('textLength="56"')
Expand All @@ -119,7 +120,7 @@ describe('CJK font', function () {
}
})
it('mermaid should compute correct text length (issue#1167)', async () => {
const testCase = {engine: 'mermaid', file: 'japanese.mermaid'}
const testCase = { engine: 'mermaid', file: 'japanese.mermaid' }
const response = await sendRequest(testCase, 'svg')
try {
const data = response.body.toString('utf8')
Expand All @@ -137,23 +138,23 @@ describe('CJK font', function () {

describe('Health', function () {
this.timeout(15000)
;['/health', '/healthz', '/v1/health'].forEach((endpoint) => {
it(`should return health status from ${endpoint}`, async () => {
const response = await chai.request('localhost:8000')
.get(endpoint)
.set('Accept', 'application/health+json')
.send()
;['/health', '/healthz', '/v1/health'].forEach((endpoint) => {
it(`should return health status from ${endpoint}`, async () => {
const response = await chai.request('localhost:8000')
.get(endpoint)
.set('Accept', 'application/health+json')
.send()

try {
expect(response.status).to.equal(200)
expect(response.body.status).to.equal('pass')
const engines = Array.from(new Set(tests.map((it) => it.engine)))
engines.push('kroki')
expect(response.body.version).to.have.keys(engines)
} catch (err) {
console.log('response:', response.text)
throw err
}
try {
expect(response.status).to.equal(200)
expect(response.body.status).to.equal('pass')
const engines = Array.from(new Set(tests.map((it) => it.engine)))
engines.push('kroki')
expect(response.body.version).to.have.keys(engines)
} catch (err) {
console.log('response:', response.text)
throw err
}
})
})
})
})
1 change: 1 addition & 0 deletions docs/antora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ asciidoc:
seqdiag-version: 3.0.0
structurizr-version: 1.30.1
svgbob-version: 0.7.0
symbolator-version: 1.2.1
zebreus marked this conversation as resolved.
Show resolved Hide resolved
umlet-version: 15.1
vega-version: 5.24.0
vegalite-version: 5.7.0
Expand Down
4 changes: 4 additions & 0 deletions docs/modules/ROOT/pages/architecture.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ The `yuzutech/kroki` Docker image contains the following diagrams libraries out-
|{svgbob-version}
//|Binary `/rust/bin/svgbob`

|https://hdl.github.io/symbolator/[Symbolator]
|{symbolator-version}
//|Binary `/usr/bin/symbolator`

|https://github.com/umlet/umlet[UMlet]
|{umlet-version}
//|Java library
Expand Down
1 change: 1 addition & 0 deletions docs/modules/ROOT/pages/diagram-types.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ Diagram::
* Digital Timing diagram (waveform)
* BPMN diagram
* Bytefield diagram
* HDL Component diagram
* Excalidraw
* https://www.diagrams.net/[diagrams.net] (experimental)
* WireViz
Expand Down
4 changes: 2 additions & 2 deletions docs/modules/ROOT/pages/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
=== Convert plain text diagrams to images !

Kroki provides a unified HTTP API with support for BlockDiag (BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag),
BPMN, Bytefield, C4 (with PlantUML), Diagrams.net (experimental), Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, PlantUML, Structurizr, SvgBob, UMLet,
Vega, Vega-Lite, WaveDrom and WireViz... and more to come!
BPMN, Bytefield, C4 (with PlantUML), Diagrams.net (experimental), Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, PlantUML, Structurizr, SvgBob,
Symbolator, UMLet, Vega, Vega-Lite, WaveDrom and WireViz... and more to come!

Kroki is available as a Self-Managed instance. +
We are also _actively_ looking for sponsors to provide Kroki as a free service:
Expand Down
1 change: 1 addition & 0 deletions docs/modules/setup/pages/configuration.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ you can override its location manually using an environment variable or a Java s
`KROKI_PIKCHR_BIN_PATH`:: Path to `pikchr` binary (defaults: `/usr/bin/pikchr`)
`KROKI_PLANTUML_BIN_PATH`:: Path to `plantuml` binary (defaults: `/usr/bin/plantuml`)
`KROKI_SVGBOB_BIN_PATH`:: Path to `svgbob` binary (defaults: `/usr/bin/svgbob`)
`KROKI_SYMBOLATOR_BIN_PATH`:: Path to `symbolator` binary (defaults: `/usr/bin/symbolator`)
`KROKI_TIKZ2SVG_BIN_PATH`:: Path to `tikz2svg` binary (defaults: `/usr/bin/tikz2svg`)
`KROKI_UMLET_BIN_PATH`:: Path to `umlet` binary (defaults: `/usr/bin/umlet`)
`KROKI_VEGA_BIN_PATH`:: Path to `vega` binary which supports both Vega and Vega-Lite grammar (defaults: `/usr/bin/bytefield`)
Expand Down
2 changes: 2 additions & 0 deletions docs/modules/setup/pages/install.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ The {uri-docker-kroki-image}[yuzutech/kroki] image contains the gateway server,
* https://github.com/plantuml/plantuml[PlantUML] including https://github.com/RicardoNiepel/C4-PlantUML[C4 model]
* https://github.com/structurizr/dsl[Structurizr]
* https://github.com/ivanceras/svgbob[Svgbob]
* https://github.com/hdl/symbolator[Symbolator]
* https://github.com/umlet/umlet[UMlet]
* https://github.com/vega/vega[Vega]
* https://github.com/vega/vega-lite[Vega-Lite]
Expand All @@ -104,6 +105,7 @@ In other words, the following endpoints will be available:
/plantuml
/structurizr
/svgbob
/symbolator
/umlet
/vega
/vegalite
Expand Down
2 changes: 1 addition & 1 deletion docs/modules/setup/pages/kroki-cli.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ kroki <command> [options] <arguments>
|Infer from input file name.

|-t, --type <type>
|Diagram type: _actdiag_, _blockdiag_, _c4plantuml_, _ditaa_, _dot_, _erd_, _graphviz_, _nomnoml_, _nwdiag_, _plantuml_, _seqdiag_, _svgbob_, _umlet_, _vega_, _vegalite_.
|Diagram type: _actdiag_, _blockdiag_, _c4plantuml_, _ditaa_, _dot_, _erd_, _graphviz_, _nomnoml_, _nwdiag_, _plantuml_, _seqdiag_, _svgbob_, _symbolator_, _umlet_, _vega_, _vegalite_.
|String
|Infer from input file extension.

Expand Down
2 changes: 1 addition & 1 deletion server/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ When a new version is available, we need to:

. update the fork
. run the following workflow: https://github.com/yuzutech/umlet/actions/workflows/release.yml
. update the argument variable `ARG UMLET_VERSION="x.y.z"` in `server/ops/docker/jdk11-jammy/Dockerfile`
. update the argument variable `ARG UMLET_VERSION="x.y.z"` in `server/ops/docker/jdk11-jammy/Dockerfile`
31 changes: 31 additions & 0 deletions server/ops/docker/jdk11-jammy/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,34 @@ FROM yuzutech/kroki-builder-erd:0.2.1.0 AS kroki-builder-static-erd
# --ghc-options="-optc=-static" \
# --ghc-options="-w"

## Symbolator
FROM ubuntu:jammy AS kroki-builder-static-symbolator

# Build from forked source because upstream is broken for the latest python3 versions
ARG SYMBOLATOR_SOURCE=git+https://github.com/zebreus/[email protected]
zebreus marked this conversation as resolved.
Show resolved Hide resolved

RUN apt-get update && apt-get install --no-install-recommends --yes \
git \
pip \
python3-dev \
patchelf \
python3-gi-cairo \
python3-gi \
build-essential \
libpango1.0-dev && \
apt-get clean && apt-get autoremove

WORKDIR /build

# Install latest pip and setuptools
RUN python3 -m pip install --upgrade pip setuptools
RUN python3 -m pip install --upgrade nuitka
# Install symbolator
RUN python3 -m pip install --upgrade ${SYMBOLATOR_SOURCE}

# Use nuitka to compile a static binary so we dont need python in the final image
RUN python3 -m nuitka --onefile `which symbolator` --include-module=gi.overrides.Pango --include-module=gi._gi_cairo
ggrossetie marked this conversation as resolved.
Show resolved Hide resolved

## Pikchr
FROM ubuntu:jammy AS kroki-builder-static-pikchr

Expand Down Expand Up @@ -235,6 +263,7 @@ RUN addgroup --gecos 1000 kroki && adduser --disabled-password --ingroup kroki -
RUN apt-get update && apt-get install --no-install-recommends --yes \
libgd3 \
libjpeg9 \
libpango1.0-0 \
giflib-tools \
fonts-freefont-ttf \
fonts-noto-cjk \
Expand Down Expand Up @@ -272,6 +301,7 @@ COPY --from=kroki-builder-nomnoml /app/app.bin /usr/bin/nomnoml
COPY --from=kroki-builder-vega /app/app.bin /usr/bin/vega
COPY --from=kroki-builder-dbml /app/app.bin /usr/bin/dbml
COPY --from=kroki-builder-wavedrom /app/app.bin /usr/bin/wavedrom
COPY --from=kroki-builder-static-symbolator /build/symbolator.bin /usr/bin/symbolator
COPY --from=kroki-builder-bytefield /app/app.bin /usr/bin/bytefield
COPY --from=kroki-builder-dvisvgm /usr/local/bin/dvisvgm /usr/bin/dvisvgm
COPY --from=tikz tikz2svg /usr/bin/tikz2svg
Expand All @@ -294,6 +324,7 @@ ENV KROKI_UMLET_BIN_PATH=/usr/bin/umlet
ENV KROKI_PLANTUML_BIN_PATH=/usr/bin/plantuml
ENV KROKI_TIKZ2SVG_BIN_PATH=/usr/bin/tikz2svg
ENV KROKI_DITAA_BIN_PATH=/usr/bin/ditaa
ENV KROKI_SYMBOLATOR_BIN_PATH=/usr/bin/symbolator
ENV JAVA_OPTS="-Dlogback.configurationFile=/etc/kroki/logback.xml -Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory"

COPY --chown=kroki:kroki target/kroki-server.jar /usr/local/kroki/kroki-server.jar
Expand Down
2 changes: 2 additions & 0 deletions server/src/main/java/io/kroki/server/Server.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import io.kroki.server.service.ServiceVersion;
import io.kroki.server.service.Structurizr;
import io.kroki.server.service.Svgbob;
import io.kroki.server.service.Symbolator;
import io.kroki.server.service.Umlet;
import io.kroki.server.service.Vega;
import io.kroki.server.service.Wavedrom;
Expand Down Expand Up @@ -127,6 +128,7 @@ static void start(Vertx vertx, JsonObject config, Handler<AsyncResult<HttpServer
registry.register(new Graphviz(vertx, config, commander), "graphviz", "dot");
registry.register(new Erd(vertx, config, commander), "erd");
registry.register(new Svgbob(vertx, config, commander), "svgbob");
registry.register(new Symbolator(vertx, config), "symbolator");
registry.register(new Nomnoml(vertx, config, commander), "nomnoml");
registry.register(new Mermaid(vertx, config), "mermaid");
registry.register(new Vega(vertx, config, Vega.SpecFormat.DEFAULT, commander), "vega");
Expand Down
Loading