1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- ERL=erl
- ERLC=erlc
- REBAR=./rebar $(REBAR_ARGS)
- all: compile
- compile: check-slex get-deps
- @$(REBAR) compile
- check-slex: src/erlydtl_scanner.erl
- src/erlydtl_scanner.erl: src/erlydtl_scanner.slex
- @echo Notice: $@ is outdated by $<, consider running "'make slex'".
- get-deps:
- @$(REBAR) get-deps
- update-deps:
- @$(REBAR) update-deps
- .PHONY: tests
- tests: export EXTRA_CONFIG=rebar-tests.config
- tests: src/erlydtl_parser.erl
- @$(REBAR) eunit
- check: tests dialyze
- ## dialyzer
- PLT_FILE = ~/erlydtl.plt
- PLT_APPS ?= kernel stdlib compiler erts eunit syntax_tools
- DIALYZER_OPTS ?= -Werror_handling -Wrace_conditions -Wunmatched_returns \
- -Wunderspecs --verbose --fullpath
- .PHONY: dialyze
- dialyze: compile
- @[ -f $(PLT_FILE) ] || $(MAKE) plt
- @dialyzer --plt $(PLT_FILE) $(DIALYZER_OPTS) ebin || [ $$? -eq 2 ];
- ## In case you are missing a plt file for dialyzer,
- ## you can run/adapt this command
- .PHONY: plt
- plt: compile
- # we need to remove second copy of file
- rm -f deps/merl/priv/merl_transform.beam
- @echo "Building PLT, may take a few minutes"
- @dialyzer --build_plt --output_plt $(PLT_FILE) --apps \
- $(PLT_APPS) deps/* || [ $$? -eq 2 ];
- clean:
- @[ ! -d deps/merl ] || { echo "Clean merl..." ; $(MAKE) -C deps/merl clean ;}
- @$(REBAR) -C rebar-slex.config clean
- rm -fv erl_crash.dump
- really-clean: clean
- rm -f $(PLT_FILE)
- # rebuild any .slex files as well.. not included by default to avoid
- # the slex dependency, which is only needed in case the .slex file has
- # been modified locally.
- slex: REBAR_DEPS ?= get-deps update-deps
- slex: slex-compile
- slex-skip-deps: REBAR_DEPS:=
- slex-skip-deps: slex-compile
- slex-compile:
- @$(REBAR) -C rebar-slex.config $(REBAR_DEPS) compile
- shell:
- @$(ERL) -pz ebin deps/*/ebin
- # this file must exist for rebar eunit to work
- # but is only built when running rebar compile
- src/erlydtl_parser.erl: compile
- committed:
- @git diff --no-ext-diff --quiet --exit-code || { echo "there are uncommitted changes in the repo." ; false ;}
- release: committed check
- @{ \
- V0=$$(grep vsn src/erlydtl.app.src | sed -e 's/.*vsn,.*"\(.*\)".*/\1/') && \
- V1=$$(grep '##' -m 1 NEWS.md | sed -e 's/##[^0-9]*\([0-9.-]*\).*/\1/') && \
- read -e -p "OK, all tests passed, current version is $$V0, which version should we release now? ($$V1)" V2 && \
- : $${V2:=$$V1} && \
- echo "$$V2 it is..." && \
- sed -i -e 's/vsn,.*}/vsn, "'$$V2'"}/' src/erlydtl.app.src && \
- git ci -m "release v$$V2" src/erlydtl.app.src && \
- git tag $$V2 && \
- echo 'Updated src/erlydtl.app.src and tagged, run `git push origin master --tags` when ready' \
- ;}
|