lr-core
Version:
Line Rider core library
52 lines (40 loc) • 1.45 kB
Plain Text
# Make does not offer a recursive wildcard function, so here's one:
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
SRC = src
BUILD = build
TEST = test-results
BUILD_CMD = ./node_modules/.bin/babel --presets es2015-node
TEST_CMD := node
SRC_FILES := $(call rwildcard,$(SRC)/,*.js) $(call rwildcard,$(SRC)/,*.json)
BUILD_FILES := $(patsubst %.json, %.js, $(patsubst $(SRC)/%, $(BUILD)/%, $(SRC_FILES)))
TEST_RESULT_FILES := $(patsubst $(SRC)/%.spec.js, $(TEST)/%.tap, $(SRC_FILES))
JSON_HEADER := 'module.exports ='
all: build unit-test
test: clean-test unit-test
build: $(BUILD_FILES)
$(BUILD)/%.js: $(SRC)/%.js
@echo Build: $< \> $@
@mkdir -p $(@D)
@$(BUILD_CMD) $< > $@
$(BUILD)/%.js: $(SRC)/%.json
@echo Build: $< \> $@
@mkdir -p $(@D)
@echo $(JSON_HEADER) > $@ && cat $< >> $@
unit-test: $(TEST_RESULT_FILES)
$(TEST)/%.tap: $(BUILD)/%.spec.js $(BUILD)/%.js
@printf "Test: $< > $@"
@mkdir -p $(@D)
@$(TEST_CMD) $< > $@ 2>> $@ && ([ $$? -eq 0 ] && printf " PASSED\n") || (printf " FAILED\n" && cat $@)
$(TEST)/%.tap: $(BUILD)/%.spec.js $(BUILD)/%/*.js $(BUILD)/%/**/*.js
@printf "Test: $< > $@"
@mkdir -p $(@D)
@$(TEST_CMD) $< > $@ 2>> $@ && ([ $$? -eq 0 ] && printf " PASSED\n") || (printf " FAILED\n" && cat $@)
clean: clean-build clean-test
clean-build:
rm -r $(BUILD)
clean-test:
rm -r $(TEST)
watch:
@echo Watching for changes...
@fswatch $(SRC) | xargs -n1 -I{} make