all: build

build: build-server build-client

# No idea why, but I need that to run applications. Ignore that.
LD_P ?= LD_PRELOAD=/usr/local/lib/libipc.so.0

DOMAIN ?= example.com
KEY_FILE ?= /tmp/KEY
setup:
	@echo -n "coucou" > $(KEY_FILE)

zone-file:
	crystal run ./tools/write-zone-file.cr -- $(DOMAIN)

build-server:
	shards build dnsmanagerd

build-client:
	shards build dnsmanager-client

VERBOSITY ?= 4
run-client-verbosity:
	@$(LD_P) ./bin/dnsmanager-client admin maintenance -k $(KEY_FILE) verbosity $(VERBOSITY)

run-client-zone-add:
	@$(LD_P) ./bin/dnsmanager-client user zone add $(DOMAIN).json

run-client-zone-del:
	@$(LD_P) ./bin/dnsmanager-client user zone del $(DOMAIN)

RRID ?= 1
NAME ?=
TTL ?= 3600
TARGET ?=
run-client-rr-add-a:
	@$(LD_P) ./bin/dnsmanager-client user rr add A $(DOMAIN) $(NAME) $(TTL) $(TARGET)
run-client-rr-update-a:
	@$(LD_P) ./bin/dnsmanager-client user rr update A $(DOMAIN) $(RRID) $(NAME) $(TTL) $(TARGET)

run-client-rr-del:
	@$(LD_P) ./bin/dnsmanager-client user rr del $(DOMAIN) $(RRID)

run-client-zone-get:
	@$(LD_P) ./bin/dnsmanager-client user zone get $(DOMAIN)

run-client-zone-list:
	@$(LD_P) ./bin/dnsmanager-client user zone list

run-dnsmanagerd:
	@$(LD_P) ./bin/dnsmanagerd -v 4 -r /tmp/DATA-dnsmanagerd -k $(KEY_FILE)

print-messages:
	cat src/requests/*.cr | ./bin/get-messages.awk
print-message-numbers:
	make -s print-messages | grep -E "^[0-9]" | sort -n
print-messages-without-comments:
	make -s print-messages | grep -vE '^[[:blank:]]+#'
print-response-messages:
	cat src/responses/*.cr | ./bin/get-messages.awk
print-response-message-numbers:
	make -s print-response-messages | grep -E "^[0-9]" | sort -n
print-response-messages-without-comments:
	make -s print-response-messages | grep -vE '^[[:blank:]]+#'