aboutsummaryrefslogtreecommitdiff
path: root/html/Makefile
blob: 6afc7ead9ed5fbc15fb0991c8fa877cb230713a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
VERBOSE ?= @

PANDOC_FLAGS = -f markdown -s --template=./template.html

# The full path to the Makefile
MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
# The path to the directory of the Makefile
MAKEFILE_DIR := $(dir $(MAKEFILE_PATH))

HTML_ROOT := $(MAKEFILE_DIR)
GAME_ROOT := $(MAKEFILE_DIR)/../
RULES_ROOT := $(GAME_ROOT)/rules
MAPS_ROOT := $(GAME_ROOT)/maps
DATA_ROOT := $(GAME_ROOT)/data
CARDS_YML_DIR := $(DATA_ROOT)/cards
LATEX_ROOT := $(GAME_ROOT)/latex
CARDS_PDF_DIR := $(LATEX_ROOT)/build

GENERATE_CARD := $(GAME_ROOT)scripts/generate_card.py
GENERATE_CARD_ARGS := --format markdown

SETS := $(shell find $(CARDS_YML_DIR) -mindepth 1 -type d -printf "%f\n")
SETS_SOURCEDIRS := $(foreach set, $(SETS), $(addprefix $(CARDS_YML_DIR)/, $(set)))

BUILDDIR := $(MAKEFILE_DIR)/build

RULE_FILES := rules.md tiles.md ai.md
DE_RULES := $(addprefix $(RULES_ROOT)/de/,$(RULE_FILES))
EN_RULES := $(addprefix $(RULES_ROOT)/en/,$(RULE_FILES))
RULES := $(DE_RULES) $(EN_RULES)
RULES_HTML := $(addprefix $(BUILDDIR)/,$(RULES:.md=.html))

SITES := index.md rules.md cards.md maps.md
HTML := $(addprefix $(BUILDDIR)/,$(SITES:.md=.html))

# Create a list of yaml card definitions
CARDS_YAML := $(foreach dir,$(SETS_SOURCEDIRS),$(wildcard $(dir)/*.yml))

MAKEFILE_LIST := Makefile

.PHONY: all clean maps
all: $(HTML) $(RULES_HTML) maps

clean:
	rm -rf $(BUILDDIR)

maps:
	@echo "building		$@"
	$(VERBOSE) ln -sf $(MAPS_ROOT) $(BUILDDIR)/maps
	$(VERBOSE) make -C $(MAPS_ROOT)

$(BUILDDIR)/%.html: %.md $(MAKEFILE_LIST)
	@echo "building		$@"
	@if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
	$(VERBOSE) if [[ $$(cat $< | wc -l) -gt 80 ]]; \
		then pandoc --toc $(PANDOC_FLAGS) $< -o $@; \
		else pandoc $(PANDOC_FLAGS) $< -o $@; fi

cards.md: $(CARDS_YAML) $(GENERATE_CARD) $(MAKEFILE_LIST)
	@echo "render cards		$@"
	$(VERBOSE) ln -sf $(CARDS_PDF_DIR) $(BUILDDIR)/cards
	$(VERBOSE) make -C $(LATEX_ROOT)
	@echo "building		$@"
	$(VERBOSE) echo -e "% Cards" > $@
	$(VERBOSE) for set in $(SETS); \
		do echo -e "\n##" $$set >> $@; \
		for card in $(CARDS_YML_DIR)/$$set/*.yml; \
			do echo "" >> $@; \
			$(GENERATE_CARD) $(GENERATE_CARD_ARGS) $$card >> $@; \
		done; \
	done