aboutsummaryrefslogtreecommitdiff
path: root/html/Makefile
blob: 3c9695952ee331b35c450e7e74994876bd086907 (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
VERBOSE ?= @

HTML_TEMPLATE := template.html
PANDOC_FLAGS := -f markdown --embed-resources --standalone --template=$(HTML_TEMPLATE)

# 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
LATEX_BUILDDIR := $(LATEX_ROOT)/build

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

GENERATE_CARD_LISTING := $(GAME_ROOT)/scripts/generate_card_listing.py

GENERATE_HOVER_LINKS := $(GAME_ROOT)/scripts/generate_card_hover_links.py

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 := $(subst $(RULES_ROOT), $(BUILDDIR)/rules, $(RULES:.md=.html))

CARDS_LISTING := cards_listing.md
DE_CARDS_LISTING := de/$(CARDS_LISTING)
EN_CARDS_LISTING := en/$(CARDS_LISTING)
LANG_CARDS_LISTINGS := $(foreach card_listing, $(DE_CARDS_LISTING) $(EN_CARDS_LISTING), \
                         $(addprefix $(BUILDDIR)/, $(card_listing:.md=.html)))

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

BLOG_SOURCEDIR := $(HTML_ROOT)/blog
BLOG_POSTS_MD := $(shell find $(BLOG_SOURCEDIR) -mindepth 1 -type f -name "*.md" -printf "%f\n")
BLOG_POSTS_HTML := $(addprefix $(BUILDDIR)/blog/,$(BLOG_POSTS_MD:.md=.html))

VPATH := $(RULES_ROOT) $(BLOG_SOURCEDIR)

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

MAKEFILE_LIST := Makefile

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

misc: $(BUILDDIR)/latex-build $(BUILDDIR)/cards-data $(BUILDDIR)/hover-placeholder.png

$(BUILDDIR)/hover-placeholder.png: hover-placeholder.png
	@echo "copying		$@"
	@if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
	$(VERBOSE) cp $< $@

clean:
	rm -rf $(BUILDDIR)

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

$(BUILDDIR)/tools.html: tools.html
	@echo "copying		$@"
	@if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
	$(VERBOSE) cp $< $@

$(BUILDDIR)/latex-build:
	@echo "render		cards"
	$(VERBOSE) $(MAKE) -C $(LATEX_ROOT)

	@echo "create		rendered cards symlink"
	$(VERBOSE) ln -sfT $(LATEX_BUILDDIR) $(BUILDDIR)/latex-build

$(BUILDDIR)/cards-data: $(LANG_CARDS_LISTINGS) $(BUILDDIR)/latex-build
	@echo "create		cards data symlink"
	$(VERBOSE) ln -sfT $(DATA_ROOT)/cards $@

define generateCardsListing
$(1)/cards_listing.md: $(CARDS_YAML) $(GENERATE_CARD) $(GENERATE_CARD_LISTING) $(MAKEFILE_LIST)
	@echo "building		$$@"
	@if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi
	$(VERBOSE) echo -e "% Cards" > $$@
	$(VERBOSE) $(GENERATE_CARD_LISTING) --language=$(2) $(CARDS_YML_DIR) >> $$@;

$(1)/cards_listing.html: $(1)/cards_listing.md $(HTML_TEMPLATE)
	@echo "building		$$@"
	@if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi
	$(VERBOSE) pandoc --toc $(PANDOC_FLAGS) $$< -o $$@;
endef

$(eval $(call generateCardsListing, $(BUILDDIR)/de,de))
$(eval $(call generateCardsListing, $(BUILDDIR)/en,en))

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

$(eval $(call generateHtml, $(BUILDDIR),))
$(eval $(call generateHtml, $(BUILDDIR)/rules, -N))
$(eval $(call generateHtml, $(BUILDDIR)/blog,))