Makefile in billomat-0.4.1 vs Makefile in billomat-1.0.0
- old
+ new
@@ -7,10 +7,11 @@
.PHONY:
# Environment switches
MAKE_ENV ?= docker
COMPOSE_RUN_SHELL_FLAGS ?= --rm
+BASH_RUN_SHELL_FLAGS ?=
# Directories
VENDOR_DIR ?= vendor/bundle
# Host binaries
@@ -25,22 +26,25 @@
XARGS ?= xargs
# Container binaries
BUNDLE ?= bundle
GEM ?= gem
+GUARD ?= guard
RAKE ?= rake
+RSPEC ?= rspec
RUBOCOP ?= rubocop
YARD ?= yard
# Define a generic shell run wrapper
# $1 - The command to run
ifeq ($(MAKE_ENV),docker)
define run-shell
$(COMPOSE) run $(COMPOSE_RUN_SHELL_FLAGS) \
-e LANG=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 \
-e HOME=/home/web -e BUNDLE_APP_CONFIG=/app/.bundle \
- -u `$(ID) -u` test bash -c 'sleep 0.1; echo; $(1)'
+ -u `$(ID) -u` test \
+ bash $(BASH_RUN_SHELL_FLAGS) -c 'sleep 0.1; echo; $(1)'
endef
else ifeq ($(MAKE_ENV),baremetal)
define run-shell
$(1)
endef
@@ -48,31 +52,41 @@
all:
# Billomat
#
# install Install the dependencies
- # update Update the local Gemset dependencies
# clean Clean the dependencies
#
# test Run the whole test suite
# test-style Test the code styles
+ # watch Watch for code changes and rerun the test suite
#
# docs Generate the Ruby documentation of the library
# stats Print the code statistics (library and test suite)
# notes Print all the notes from the code
# release Release a new Gem version (maintainers only)
#
# shell Run an interactive shell on the container
# shell-irb Run an interactive IRB shell on the container
+.interactive:
+ @$(eval BASH_RUN_SHELL_FLAGS = --login)
+
install:
# Install the dependencies
@$(MKDIR) -p $(VENDOR_DIR)
@$(call run-shell,$(BUNDLE) check || $(BUNDLE) install --path $(VENDOR_DIR))
- @$(call run-shell,GEM_HOME=vendor/bundle/ruby/$${RUBY_MAJOR}.0 \
- $(GEM) install bundler -v "~> 1.0")
+update:
+ # Install the dependencies
+ @$(MKDIR) -p $(VENDOR_DIR)
+ @$(call run-shell,$(BUNDLE) update)
+
+watch: install .interactive
+ # Watch for code changes and rerun the test suite
+ @$(call run-shell,$(BUNDLE) exec $(GUARD))
+
test: \
test-specs \
test-style
test-specs:
@@ -88,22 +102,22 @@
clean:
# Clean the dependencies
@$(RM) -rf $(VENDOR_DIR)
@$(RM) -rf $(VENDOR_DIR)/Gemfile.lock
- @$(RM) -rf pkg
- @$(RM) -rf coverage
+ @$(RM) -rf .bundle .yardoc coverage pkg Gemfile.lock doc/api \
+ .rspec_status
clean-containers:
# Clean running containers
ifeq ($(MAKE_ENV),docker)
@$(COMPOSE) down
endif
clean-images:
# Clean build images
ifeq ($(MAKE_ENV),docker)
- @-$(DOCKER) images | $(GREP) rimless \
+ @-$(DOCKER) images | $(GREP) $(shell basename "`pwd`") \
| $(AWK) '{ print $$3 }' \
| $(XARGS) -rn1 $(DOCKER) rmi -f
endif
distclean: clean clean-containers clean-images