@@ -6,6 +6,7 @@ OUTPUT_DIR ?= $(ROOT_DIR)/output
66PARCEL_DIR ?= $(BUILD_DIR ) /parcel
77RTS_ARGS ?=
88SRC_DIR ?= $(ROOT_DIR ) /src
9+ TEST_DIR ?= $(ROOT_DIR ) /test
910UI_GUIDE_DIR ?= $(ROOT_DIR ) /ui-guide
1011
1112# Variables that we control
@@ -16,6 +17,7 @@ FIND_SRC_FILES_ARGS := \( -name '*.purs' -o -name '*.js' \) -type f
1617NODE_MODULES := $(ROOT_DIR ) /node_modules/.stamp
1718PACKAGE_JSON := $(ROOT_DIR ) /package.json
1819SRC_FILES := $(shell find $(SRC_DIR ) $(FIND_SRC_FILES_ARGS ) )
20+ TEST_FILES := $(shell find $(TEST_DIR ) $(FIND_SRC_FILES_ARGS ) )
1921UI_GUIDE_FILES := $(shell find $(UI_GUIDE_DIR ) $(FIND_SRC_FILES_ARGS ) )
2022YARN_LOCK := $(ROOT_DIR ) /yarn.lock
2123
@@ -28,16 +30,29 @@ YARN := cd $(ROOT_DIR) && yarn
2830$(BUILD_DIR ) $(DIST_DIR ) $(PARCEL_DIR ) :
2931 mkdir -p $@
3032
33+ $(BUILD_DIR ) /test.js : $(OUTPUT_DIR ) /Test.Main/index.js | $(BUILD_DIR )
34+ $(YARN ) run purs bundle \
35+ $(RTS_ARGS ) \
36+ $(OUTPUT_DIR ) /* /* .js \
37+ --main Test.Main \
38+ --module Test.Main \
39+ --output $@
40+
41+ $(BUILD_DIR ) /test.out : $(BUILD_DIR ) /test.js
42+ node $< | tee $@ .tmp # Store output in a temp file in case of a failure.
43+ mv $@ .tmp $@ # Move the output where it belongs.
44+
3145$(DEPS ) : packages.dhall spago.dhall $(NODE_MODULES ) | $(BUILD_DIR )
3246 $(YARN ) run spago install $(RTS_ARGS )
3347 touch $@
3448
3549$(DIST_DIR ) /bundled.js : $(OUTPUT_DIR ) /Main/index.js
36- $(YARN ) run purs bundle $(OUTPUT_DIR ) /* /* .js \
50+ $(YARN ) run purs bundle \
51+ $(RTS_ARGS ) \
52+ $(OUTPUT_DIR ) /* /* .js \
3753 --main Main \
3854 --module Main \
39- --output $@ \
40- $(RTS_ARGS )
55+ --output $@
4156
4257$(DIST_DIR ) /index.js : $(OUTPUT_DIR ) /Main/index.js
4358 $(YARN ) run browserify dist/main.js --outfile $@
@@ -49,6 +64,9 @@ $(NODE_MODULES): $(PACKAGE_JSON) $(YARN_LOCK)
4964$(OUTPUT_DIR ) /Main/index.js : $(SRC_FILES ) $(UI_GUIDE_FILES ) $(DEPS )
5065 $(YARN ) run spago build -p " $( UI_GUIDE_DIR) /**/*.purs" -u " $( RTS_ARGS) "
5166
67+ $(OUTPUT_DIR ) /Test.Main/index.js : $(SRC_FILES ) $(TEST_FILES ) $(DEPS )
68+ $(YARN ) run spago build -p " $( TEST_DIR) /Main.purs $( TEST_DIR) /Test/**/*.purs" -u " $( RTS_ARGS) "
69+
5270.PHONY : build
5371build : $(BUILD_DEPS )
5472
@@ -65,6 +83,9 @@ clean: $(CLEAN_DEPS)
6583 $(ROOT_DIR ) /.spago \
6684 $(ROOT_DIR ) /node_modules
6785
86+ .PHONY : test
87+ test : $(BUILD_DIR ) /test.out
88+
6889.PHONY : ui-guide
6990ui-guide : build-css $(OUTPUT_DIR ) /Main/index.js $(NODE_MODULES ) | $(PARCEL_DIR )
7091 npx parcel $(DIST_DIR ) /parcel.html --out-dir $(PARCEL_DIR ) --no-cache
0 commit comments