Makefile.module 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. MODULE_NAME := $(notdir $(shell pwd))
  2. MODULE_DIR := modules/$(MODULE_NAME)
  3. PROJECT_NAME = web
  4. COFFEE := ../../node_modules/.bin/coffee
  5. BABEL := ../../node_modules/.bin/babel
  6. APP_COFFEE_FILES := $(shell [ -e app/coffee ] && find app/coffee -name '*.coffee') \
  7. $(shell [ -e test/unit/coffee ] && find test/unit/coffee -name '*.coffee') \
  8. $(shell [ -e test/acceptance/coffee ] && find test/acceptance/coffee -name '*.coffee')
  9. APP_JS_FILES := $(subst coffee,js,$(APP_COFFEE_FILES))
  10. IDE_SRC_FILES := $(shell [ -e public/src/ide ] && find public/src/ide -name '*.js')
  11. IDE_OUTPUT_FILES := $(subst public/src/ide,../../public/js/ide/$(MODULE_NAME),$(IDE_SRC_FILES))
  12. IDE_TEST_SRC_FILES := $(shell [ -e test/unit_frontend/src/ide ] && find test/unit_frontend/src/ide -name '*.js')
  13. IDE_TEST_OUTPUT_FILES := $(subst test/unit_frontend/src/ide,../../test/unit_frontend/js/ide/$(MODULE_NAME),$(IDE_TEST_SRC_FILES))
  14. MAIN_SRC_FILES := $(shell [ -e public/src/main ] && find public/src/main -name '*.js')
  15. MAIN_OUTPUT_FILES := $(subst public/src/main,../../public/js/main/$(MODULE_NAME),$(MAIN_SRC_FILES))
  16. DOCKER_COMPOSE_FLAGS ?= -f docker-compose.yml
  17. DOCKER_COMPOSE_MODULE_FLAGS := ${DOCKER_COMPOSE_FLAGS} -f $(MODULE_DIR)/docker-compose.yml
  18. DOCKER_COMPOSE := cd ../../ && \
  19. MODULE_DIR=$(MODULE_DIR) \
  20. BUILD_NUMBER=$(BUILD_NUMBER) \
  21. BRANCH_NAME=$(BRANCH_NAME) \
  22. PROJECT_NAME=$(PROJECT_NAME) \
  23. MOCHA_GREP=${MOCHA_GREP} \
  24. docker-compose ${DOCKER_COMPOSE_MODULE_FLAGS}
  25. app/js/%.js: app/coffee/%.coffee
  26. @mkdir -p $(dir $@)
  27. $(COFFEE) --compile --print $< > $@
  28. test/unit/js/%.js: test/unit/coffee/%.coffee
  29. @mkdir -p $(dir $@)
  30. $(COFFEE) --compile --print $< > $@
  31. test/acceptance/js/%.js: test/acceptance/coffee/%.coffee
  32. @mkdir -p $(dir $@)
  33. $(COFFEE) --compile --print $< > $@
  34. ../../test/unit_frontend/js/ide/$(MODULE_NAME)/%.js: test/unit_frontend/src/ide/%.js
  35. @mkdir -p $(dir $@)
  36. $(BABEL) $< --out-file $@
  37. ../../public/js/ide/$(MODULE_NAME)/%.js: public/src/ide/%.js
  38. @mkdir -p $(dir $@)
  39. $(BABEL) $< --out-file $@
  40. ../../public/js/main/$(MODULE_NAME)/%.js: public/src/main/%.js
  41. @mkdir -p $(dir $@)
  42. $(BABEL) $< --out-file $@
  43. index.js: index.coffee
  44. $(COFFEE) --compile --print $< > $@
  45. compile: $(APP_JS_FILES) $(IDE_OUTPUT_FILES) $(MAIN_OUTPUT_FILES) $(IDE_TEST_OUTPUT_FILES) index.js
  46. @echo > /dev/null
  47. compile_full:
  48. if [ -e app/coffee ]; then $(COFFEE) -o app/js -c app/coffee; fi
  49. if [ -e test/unit/coffee ]; then $(COFFEE) -o test/unit/js -c test/unit/coffee; fi
  50. if [ -e test/acceptance/coffee ]; then $(COFFEE) -o test/acceptance/js -c test/acceptance/coffee; fi
  51. if [ -e public/src/ide ]; then $(BABEL) public/src/ide --out-dir ../../public/js/ide/$(MODULE_NAME); fi
  52. if [ -e public/src/main ]; then $(BABEL) public/src/main --out-dir ../../public/js/main/$(MODULE_NAME); fi
  53. if [ -e test/unit_frontend/src/ide ]; then $(BABEL) test/unit_frontend/src/ide --out-dir ../../test/unit_frontend/js/ide/$(MODULE_NAME); fi
  54. @$(MAKE) compile
  55. test_acceptance:
  56. ${DOCKER_COMPOSE} run --rm test_acceptance npm -q run test:acceptance:run_dir -- ${MOCHA_ARGS} $(MODULE_DIR)/test/acceptance/js