rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
99 lines (77 loc) • 3.04 kB
Plain Text
MAKEFLAGS += --no-builtin-rules
.SUFFIXES:
VERSION := $(shell grep '"version":' package.json | sed 's/[^0-9\.]//g')
NODE_MODS := node_modules
NODE_BIN := $(shell npm bin)
JS_HEAD_NAMES := _head internal Rafa
JS_CORE_NAMES := Stream Property RingBuffer Channel Enumerator EmptyEnumerator ArrayEnumerator \
UntilEnumerator Message ErrorMessage ErrorDoneMessage DoneMessage Context
JS_TAIL_NAMES = _tail
JS_HEAD := $(JS_HEAD_NAMES:%=./src/%.js)
JS_CORE := $(JS_CORE_NAMES:%=./src/core/%.js)
JS_TAIL = $(JS_TAIL_NAMES:%=./src/%.js)
JS = $(JS_HEAD) $(JS_CORE) $(JS_TAIL)
TEST_REPORTER ?= spec
TEST_UNIT_CORE ?= $(wildcard test/unit/core/*)
TEST_SPEC_CORE ?= $(wildcard test/spec/core/*)
DIST := dist
DIST_DOC := $(DIST)/index.html
DIST_JS_ES6 = $(DIST)/rafa-es6.js
DIST_JS_ES5 = $(DIST)/rafa.js
DIST_JS_ES5_MIN = $(DIST)/rafa.min.js
all: clean build docs test
build: $(DIST_JS_ES5_MIN)
test: unit spec bench
unit: $(DIST_JS_ES5)
@$(NODE_BIN)/mocha --harmony -u tdd -R $(TEST_REPORTER) $(TEST_UNIT_CORE)
spec: $(DIST_JS_ES5)
@$(NODE_BIN)/mocha --harmony -u tdd -R $(TEST_REPORTER) $(TEST_SPEC_CORE)
bench: $(DIST_JS_ES5)
@echo "Benchmarks:"
@node ./test/bench/spec/stream-push.js
@node ./test/bench/spec/Promise.js
docs: $(DIST_DOC) | $(NODE_MODS)
clean:
@rm -rf $(DIST)
$(DIST_JS_ES6): | $(DIST) $(NODE_MODS)
@cat $(JS) >$@
@$(NODE_BIN)/eslint $@
@echo "Created Rafa file at $@"
$(DIST_JS_ES5): $(DIST_JS_ES6)
@$(NODE_BIN)/babel $< >$@
$(DIST_JS_ES5_MIN): $(DIST_JS_ES5)
@$(NODE_BIN)/uglifyjs --mangle --compress --comments -- $< >$@
@cp $@ ./index.js
$(DIST_DOC): | build
@$(NODE_BIN)/splitdoc --docs=./docs --title=Rafa.js \
--section=Guide Introduction \
--section=API \
Channel Channel-close Channel-configure Channel-next \
Enumerator \
Property Property-get Property-set \
Stream Stream-collect Stream-done Stream-drop Stream-each Stream-enumerate \
Stream-error Stream-filter Stream-filterDuplicates Stream-flatMap Stream-fold \
Stream-group Stream-listener Stream-map Stream-merge Stream-once Stream-reduce \
Stream-release Stream-scan Stream-split Stream-take Stream-toProperty \
--source=Rafa:./src/Rafa.js \
--source=Stream:./src/core/Stream.js \
--source=Property:./src/core/Property.js \
--source=RingBuffer:./src/core/RingBuffer.js \
--source=Channel:./src/core/Channel.js \
--source=Enumerator:./src/core/Enumerator.js \
--source=EmptyEnumerator:./src/core/EmptyEnumerator.js \
--source=ArrayEnumerator:./src/core/ArrayEnumerator.js \
--source=UntilEnumerator:./src/core/UntilEnumerator.js \
--source=Message:./src/core/Message.js \
--source=ErrorMessage:./src/core/ErrorMessage.js \
--source=ErrorDoneMessage:./src/core/ErrorDoneMessage.js \
--source=DoneMessage:./src/core/DoneMessage.js \
--source=Context:./src/core/Context.js \
>$@
@echo "Created Documentation at $@"
$(DIST):
@mkdir -p $@
$(NODE_MODS):
@npm install
@echo "Installed Dependencies"