GITHASH := $(shell git rev-parse --short HEAD)$(shell git diff-index --quiet HEAD || echo "-dirty") TARNAME := xl-imbus_$(GITHASH).tar.gz DIRNAME := xl MERMAID := java -jar java2umltext.jar --no-constructors --no-method-relationships --no-field-relationships MERMAID UMLDIRNAME := xl_diagrams_$(GITHASH) UMLTARNAME := $(UMLDIRNAME).tar.gz run: ./gradlew run watch: ./gradlew run --continuous build: ./gradlew build ls -lh app/build/libs/*.jar clean: ./gradlew clean rm -f *.tar.gz *.tar.gz.minisig *.zip *.jpg rm -f *.jar *.mmd *.puml *.png *.svg test: ./gradlew test $(TARNAME): git archive --format=tar --prefix=$(DIRNAME)/ HEAD > intermediate.tar tar -f intermediate.tar --delete $(DIRNAME)/doc gzip -9 -c intermediate.tar > $(TARNAME) rm intermediate.tar $(TARNAME).minisig: $(TARNAME) minisign -Sm $(TARNAME) tar: $(TARNAME) tar -tvf $(TARNAME) tar -tvf $(TARNAME) | wc -l sign: $(TARNAME).minisig inherit: nu -c 'rg -Ioi ".*class .* (extends|implements).*\\{" | sd " *\\{" "" | lines | sort | save -f inheritance.txt' install-mermaid: npm install -g @mermaid-js/mermaid-cli publish: $(TARNAME) $(TARNAME).minisig @git diff-index --quiet HEAD || (echo "git is dirty, commit changes first"; exit 1) ssh server mkdir -p /public/$(DIRNAME) rsync -avz $(TARNAME).minisig server:/public/$(DIRNAME)/$(TARNAME).minisig rsync -avz $(TARNAME) server:/public/$(DIRNAME)/$(TARNAME) ssh server ln -sf /public/$(DIRNAME)/$(TARNAME).minisig /public/$(DIRNAME)/xl-imbus-latest.tar.gz.minisig ssh server ln -sf /public/$(DIRNAME)/$(TARNAME) /public/$(DIRNAME)/xl-imbus-latest.tar.gz java2umltext.jar: curl --progress-bar -L -o java2umltext.jar https://github.com/feitosa-daniel/java2umltext/releases/download/v0.1.0/java2umltext-0.1.0.jar @echo -n "5d0368b1bebe7cee289d0febc0433d5a4c120762b7ca611948f828bc955c44f6 java2umltext.jar" | sha256sum -c || \ (echo "Checksum mismatch, something fishy is up"; rm -f java2umltext.jar; exit 1) uml: java2umltext.jar $(MERMAID) app/src/main/java/xl/model > diagrams_model.mmd $(MERMAID) app/src/main/java/xl/expr > diagrams_expr.mmd $(MERMAID) app/src/main/java/xl/gui > diagrams_gui.mmd $(MERMAID) app/src/main/java/xl/menu > diagrams_menu.mmd $(MERMAID) app/src/main/java/xl/util > diagrams_util.mmd $(MERMAID) app/src/main/java/xl/controller> diagrams_controller.mmd mmdc -q -i diagrams_model.mmd -o diagrams_model.svg -t dark -b transparent mmdc -q -i diagrams_expr.mmd -o diagrams_expr.svg -t dark -b transparent mmdc -q -i diagrams_gui.mmd -o diagrams_gui.svg -t dark -b transparent mmdc -q -i diagrams_menu.mmd -o diagrams_menu.svg -t dark -b transparent mmdc -q -i diagrams_util.mmd -o diagrams_util.svg -t dark -b transparent mmdc -q -i diagrams_controller.mmd -o diagrams_controller.svg -t dark -b transparent mmdc -q -i diagrams_model.mmd -o diagrams_model.png mmdc -q -i diagrams_expr.mmd -o diagrams_expr.png mmdc -q -i diagrams_gui.mmd -o diagrams_gui.png mmdc -q -i diagrams_menu.mmd -o diagrams_menu.png mmdc -q -i diagrams_util.mmd -o diagrams_util.png mmdc -q -i diagrams_controller.mmd -o diagrams_controller.png @tar --transform 's,^,$(UMLDIRNAME)/,' -czf $(UMLTARNAME) diagrams_*.{mmd,png,svg} tar -tvf $(UMLTARNAME) @# java -jar java2umltext.jar PLANTUML app/src/main/java/model > diagrams.puml @# Optionally stamp out to PNG with plantuml and mmdc cli tools here umlpublish: $(UMLTARNAME) ssh server mkdir -p /public/$(DIRNAME)/diagrams rsync -avz $(UMLTARNAME) server:/public/$(DIRNAME)/diagrams/$(UMLTARNAME) .PHONY: run watch build clean test archive sign publish uml umlpublish