## directories

dir_source := source
dir_build := build


## commands

cmd_log := echo "--"
cmd_tsc := tsc --lib es2017,dom
cmd_cp := cp
cmd_lessc := lessc
cmd_mkdir := mkdir -p


## rules

all: structure logic style
.PHONY: all

structure: ${dir_build}/index.html
.PHONY: structure

${dir_build}/index.html: ${dir_source}/index.html
	@ ${cmd_log} "structure …"
	@ ${cmd_mkdir} $(dir $@)
	@ ${cmd_cp} -ru $^ $@

logic: ${dir_build}/logic.js
.PHONY: logic

${dir_build}/logic.js: \
	${dir_source}/logic/types.ts \
	${dir_source}/logic/helpers.ts \
	${dir_source}/logic/model.ts \
	${dir_source}/logic/view.ts \
	${dir_source}/logic/control.ts \
	${dir_source}/logic/main.ts
	@ ${cmd_log} "logic …"
	@ ${cmd_mkdir} $(dir $@)
	@ ${cmd_tsc} $^ --outFile $@

style: ${dir_build}/style.css
.PHONY: style

${dir_build}/style.css: ${dir_source}/style.less
	@ ${cmd_log} "style …"
	@ ${cmd_mkdir} $(dir $@)
	@ ${cmd_lessc} $^ > $@