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
|
LUA?="$(shell where lua | head -n 1)"
MOONC?="$(shell where moonc | head -n 1)"
BUSTED?="$(shell where busted | head -n 1)"
AMULET?="$(shell where amulet | head -n 1)"
MAGICK?="$(shell where magick | head -n 1)" -script
PYTHON?=python
PYTEST?=$(PYTHON) -m pytest
# Works on windows and linux (and mac?)
CP?=cp
RM?=rm
CD?=cd
UNZIP?=7z x -y
.PHONY: all clean test test-integration test-integration-headless test1
# Recursive wildcard
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
# Source code
src_moon=$(call rwildcard,src,*.moon)
built_moon=$(src_moon:src/%.moon=data/%.lua)
dbg_moon=$(src_moon:src/%.moon=data/%.lua.X)
src_lua=$(call rwildcard,src,*.lua)
built_lua=$(src_lua:src/%.lua=data/%.lua)
src_js=$(call rwildcard,src,*.js)
built_js=$(src_js:src/%.js=data/%.lua)
src_vert=$(call rwildcard,src,*.vert)
built_vert=$(src_vert:src/%.vert=data/%.vert)
src_frag=$(call rwildcard,src,*.frag)
built_frag=$(src_frag:src/%.frag=data/%.frag)
src_imagemagick=$(call rwildcard,assets_src,*.imagemagick)
built_imagemagick=$(src_imagemagick:assets_src/%.imagemagick=data/assets/%.png)
src_png=$(call rwildcard,assets_src,*.png)
built_png=$(src_png:assets_src/%.png=data/assets/%.png)
sprites=$(built_imagemagick) $(built_png)
built=$(built_moon) $(built_lua) $(built_js) $(built_vert) $(built_frag) $(built_imagemagick) data/sprites.lua data/sprites.png
built_dbg=$(built) $(dbg_moon)
all: ggj26/amulet.js ggj26/amulet.wasm ggj26/data.pak ggj26/index.html
echo "Done"
$(AMULET) export -r -html -a data
#scp ggj26-0.0.0-html.zip alex@cogarr.net:
$(UNZIP) *.zip
$(CD) ggj26 && python3 -m http.server -b 0.0.0.0 8000
ggj26/index.html ggj26/amulet.js ggj26/amulet.wasm ggj26/data.pak: ggj26-0.0.0-html.zip
$(UNZIP) *.zip
data/sprites.lua data/sprites.png : $(sprites)
$(AMULET) pack -png data/sprites.png -lua data/sprites.lua yataghan.ttf@64 yataghan.ttf@32 $^
# $(RM) -rf data/assets
sed -i 's|data/sprites\.png|sprites.png|g; s|data/assets/|assets/|g' data/sprites.lua
ggj26-0.0.0-html.zip : $(built_dbg)
$(AMULET) export -r -html -a data
clean:
$(RM) $(built)
test: $(built_dbg)
$(BUSTED) -m "./data/?.lua" -o utfTerminal -v spec
test-integration:
$(PYTEST) -v
test-integration-headless:
@set HEADLESS=1 && $(PYTEST) -v
test1: test test-integration
$(built_lua) : data/%.lua : src/%.lua
$(CP) $< $@
$(built_moon) : data/%.lua : src/%.moon
# $(MOONC) -l $< # Linter isn't good enough yet
$(MOONC) -p $< > $@
$(dbg_moon) : data/%.lua.X : src/%.moon
# $(MOONC) -l $< # Linter isn't good enough yet
$(MOONC) -X $< > $@
$(built_js) : data/%.lua : src/%.js
$(if $(findstring party/,$<),@echo Skipping jshint for third-party library: $<,npx jshint $<)
echo "return [=====[" > $@
cat $< >> $@
echo "]=====]" >> $@
$(built_imagemagick) : data/assets/%.png : assets_src/%.imagemagick
@mkdir -p $(dir $@)
$(MAGICK) $< > $@
$(built_png) : data/assets/%.png : assets_src/%.png
@mkdir -p $(dir $@)
$(CP) $< $@
$(built_vert) : data/%.vert : src/%.vert
@mkdir -p $(dir $@)
$(CP) $< $@
$(built_frag) : data/%.frag : src/%.frag
@mkdir -p $(dir $@)
$(CP) $< $@
|