Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@ e2e_report.html
bin
out
d2
# generated svg examples (from make themesdemo)
testdata/examples/svg/

# https://github.com/golang/go/blob/8b67cf0bc6ad657fddcbaaa10729d0086f08f9a9/src/cmd/go/internal/test/test.go#L415-L416
e2etests.test
e2etests.test

# nix/devenv related
# .envrc
devenv.*
!devenv.nix
.devenv*
.direnv
.pre-commit-config.yaml

17 changes: 17 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,20 @@ race: fmt
.PHONY: js
js: gen
cd d2js/js && NPM_VERSION="${NPM_VERSION}" prefix "$@" ./make.sh all

SVGDIR := testdata/examples/svg
SVGS = $(shell ./d2 themes | gawk -F':' '/^-/{ printf "$(SVGDIR)/themex-%03d.svg ",$$2 }' || :)

.PHONY: clean
clean:
rm -f $(SVGS) d2
rmdir $(SVGDIR)

.PHONY: themesdemo
themesdemo: $(SVGS) d2

$(SVGDIR)/themex-%.svg: testdata/examples/themex.d2
$(info Building $@ from $< ...)
./d2 -t $$(( 10#$* )) $< $@

d2: build
50 changes: 50 additions & 0 deletions testdata/examples/themex.d2
Original file line number Diff line number Diff line change
@@ -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