From 5c665610cb522139c2ae698fd42bc83f4a31bef7 Mon Sep 17 00:00:00 2001 From: ppenguin Date: Thu, 29 Aug 2024 15:14:00 +0200 Subject: [PATCH] Add build script to make an (svg) demo of all available themes --- Makefile | 4 +++ testdata/examples/Makefile | 14 +++++++++++ testdata/examples/themex.d2 | 50 +++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 testdata/examples/Makefile create mode 100644 testdata/examples/themex.d2 diff --git a/Makefile b/Makefile index dc2e39f235..b86d262a9f 100644 --- a/Makefile +++ b/Makefile @@ -21,3 +21,7 @@ test: fmt .PHONY: race race: fmt prefix "$@" ./ci/test.sh --race ./... + +.PHONY: themesdemo +themesdemo: + $(MAKE) -C ./testdata/examples/ diff --git a/testdata/examples/Makefile b/testdata/examples/Makefile new file mode 100644 index 0000000000..8cbc835b1a --- /dev/null +++ b/testdata/examples/Makefile @@ -0,0 +1,14 @@ +D2 := ../../d2 + +SVGS = $(shell $(D2) themes | gawk -F':' '/^-/{ printf "out/themex-%03d.svg ",$$2 }' || :) + +.PHONY: +all: $(D2) $(SVGS) + +$(D2): + cd $(dir $@) && go build + $(MAKE) $(SVGS) +# D2 as dependency to expire results if recompiled +out/themex-%.svg: themex.d2 $(D2) + $(info Building $@ from $< ...) + $(D2) -t $$(( 10#$* )) $< $@ diff --git a/testdata/examples/themex.d2 b/testdata/examples/themex.d2 new file mode 100644 index 0000000000..4dba20d830 --- /dev/null +++ b/testdata/examples/themex.d2 @@ -0,0 +1,50 @@ + +vars: { + d2-config: { + layout-engine: elk + } +} +network: { + cell tower: { + satellites: { + shape: stored_data + style.multiple: true + } + + transmitter + + satellites -> transmitter: send + satellites -> transmitter: send + satellites -> transmitter: send + } + + online portal: { + ui: {shape: hexagon} + } + + data processor: { + storage: { + shape: cylinder + style.multiple: true + } + } + + cell tower.transmitter -> data processor.storage: phone logs +} + +user: { + shape: person + width: 130 +} + +user -> network.cell tower: make call +user -> network.online portal.ui: access { + style.stroke-dash: 3 +} + +api server -> network.online portal.ui: display +api server -> logs: persist +logs: {shape: page; style.multiple: true} + +network.data processor -> api server +