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 +