78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
 | 
						|
ignore_file = .git/info/exclude
 | 
						|
 | 
						|
 | 
						|
.PHONY: help
 | 
						|
help: ## Print the help message
 | 
						|
	@awk 'BEGIN {FS = ":.*?## "} /^[0-9a-zA-Z._-]+:.*?## / {printf "\033[36m%s\033[0m : %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
 | 
						|
		sort | \
 | 
						|
		column -s ':' -t
 | 
						|
 | 
						|
.PHONY: check
 | 
						|
check: ## Check you have all dependencies
 | 
						|
	@command -v graph-easy >/dev/null || { echo "Install perl-graph-easy" && exit 1 ;}
 | 
						|
	@command -v recsel >/dev/null || { echo "Install recutils" && exit 1 ;}
 | 
						|
	@command -v lowdown >/dev/null || { echo "Install lowdown" && exit 1 ;}
 | 
						|
	@echo "All dependencies installed"
 | 
						|
 | 
						|
########## Network Map ##########
 | 
						|
 | 
						|
graph_program != type graph-easy > /dev/null && printf graph-easy || printf dot 
 | 
						|
 | 
						|
graph_cmd = graph-easy --boxart
 | 
						|
 | 
						|
queries = queries authqueries
 | 
						|
 | 
						|
query_formats = $(patsubst %, .dbs/%.txt, $(queries))
 | 
						|
 | 
						|
dotquery_formats = $(patsubst %, .dbs/%.dot, $(queries))
 | 
						|
 | 
						|
.dbs/: | $(ignore_file)
 | 
						|
	mkdir $@
 | 
						|
 | 
						|
ignored += .dbs/
 | 
						|
 | 
						|
$(query_formats): .dbs/%.txt: | .dbs/
 | 
						|
	echo "[ {{name}} ] -- $(basename $(@F)) --> [ {{$(basename $(@F))}} ]" > $@
 | 
						|
 | 
						|
$(dotquery_formats): .dbs/%.dot: | .dbs/
 | 
						|
	echo '{{name}} -> {{$(basename $(@F))}} [ label="$(basename $(@F))" ];' > $@
 | 
						|
 | 
						|
ifeq ($(graph_program),dot)
 | 
						|
  map_file = network.png
 | 
						|
else
 | 
						|
  map_file = network.txt
 | 
						|
endif
 | 
						|
 | 
						|
ignored += $(map_file)
 | 
						|
 | 
						|
.PHONY: map
 | 
						|
map: $(map_file) ## Generate a network map
 | 
						|
 | 
						|
network.txt: .dbs/network.txt
 | 
						|
	$(graph_cmd) < $<
 | 
						|
 | 
						|
.dbs/network.txt: network.rec $(query_formats)
 | 
						|
	$(RM) $@
 | 
						|
	$(foreach relation, $(queries), \
 | 
						|
	recsel $< -t lxc -e "$(relation) != ''" -p name,$(relation) | recfmt -f .dbs/$(relation).txt >> $@ ;\
 | 
						|
	)
 | 
						|
 | 
						|
.dbs/network.dot: network.rec $(dotquery_formats)
 | 
						|
	echo 'digraph network {' > $@
 | 
						|
	$(foreach relation, $(queries), \
 | 
						|
	recsel $< -t lxc -e "$(relation) != ''" -p name,$(relation) | recfmt -f .dbs/$(relation).dot >> $@ ;\
 | 
						|
	)
 | 
						|
	echo '}' >> $@
 | 
						|
 | 
						|
network.png: .dbs/network.dot $(ignore_file)
 | 
						|
	dot -T png < $< > $@
 | 
						|
 | 
						|
##########
 | 
						|
 | 
						|
$(ignore_file): $(MAKEFILE_LIST)
 | 
						|
	echo $(ignored) | tr ' ' '\n' > $@
 | 
						|
 | 
						|
clean:
 | 
						|
	$(RM) -r $(ignored)
 |