#!/usr/bin/make -f
#
# Makefile for course repos
#
# Colors and helptext
NO_COLOR = \033[0m
ACTION = \033[32;01m
OK_COLOR = \033[32;01m
ERROR_COLOR = \033[31;01m
WARN_COLOR = \033[33;01m
HELPTEXT = /bin/echo -e "$(ACTION)--->" `egrep "^\# target: $(1) " Makefile | sed "s/\# target: $(1)[ ]\+- / /g"` "$(NO_COLOR)"
# Add local bin path for test tools
PATH_ORIG = "$(PATH)"
PATH := "$(PWD)/bin:$(PWD)/vendor/bin:$(PWD)/node_modules/.bin:$(PATH)"
# target: help - Displays help.
.PHONY: help
help:
@$(call HELPTEXT,$@)
@echo "Usage:"
@echo " make [target] ..."
@echo "target:"
@egrep "^# target:" Makefile | sed 's/# target: / /g'
# target: install - Install needed utilities locally.
.PHONY: install
install: automated-tests-prepare
@$(call HELPTEXT,$@)
# target: check - Check installed utilities.
.PHONY: check
check: automated-tests-check
@$(call HELPTEXT,$@)
# target: test - Install test tools & run tests.
.PHONY: test
test: automated-tests-prepare automated-tests-check automated-tests-run dbwebb-testrepo
@$(call HELPTEXT,$@)
# target: build-prepare - Prepare the build directory.
.PHONY: build-prepare
build-prepare:
@$(call HELPTEXT,$@)
install -d build
install -d bin/pip
# target: clean - Remove all generated files.
.PHONY: clean
clean:
@$(call HELPTEXT,$@)
rm -rf build
rm -f npm-debug.log
# target: clean-me - Remove me-directory.
.PHONY: clean-me
clean-me:
@$(call HELPTEXT,$@)
rm -rf me
# target: clean-all - Remove all installed files.
.PHONY: clean-all
clean-all: clean
@$(call HELPTEXT,$@)
rm -rf bin
rm -rf node_modules
rm -rf vendor
# target: dbwebb-install - Download and install dbwebb-cli.
.PHONY: dbwebb-install
dbwebb-install: build-prepare
@$(call HELPTEXT,$@)
wget --quiet -O bin/dbwebb https://raw.githubusercontent.com/mosbth/dbwebb-cli/master/dbwebb2
chmod 755 bin/dbwebb
export PATH=$(PATH) && dbwebb config create noinput && dbwebb --version
export PATH=$(PATH_ORIG)
# target: dbwebb-testrepo - Test course repo.
.PHONY: dbwebb-testrepo
dbwebb-testrepo: dbwebb-install
@$(call HELPTEXT,$@)
export PATH=$(PATH) && dbwebb --silent --local testrepo
export PATH=$(PATH_ORIG)
# target: dbwebb-validate-install - Download and install dbwebb-validate.
.PHONY: dbwebb-validate-install
dbwebb-validate-install: build-prepare
@$(call HELPTEXT,$@)
wget --quiet -O bin/dbwebb-validate https://raw.githubusercontent.com/mosbth/dbwebb-cli/master/dbwebb2-validate
chmod 755 bin/dbwebb-validate
export PATH=$(PATH) && dbwebb-validate --version
export PATH=$(PATH_ORIG)
# target: dbwebb-validate-check - Check version and environment for dbwebb-validate.
.PHONY: dbwebb-validate-check
dbwebb-validate-check:
@$(call HELPTEXT,$@)
export PATH=$(PATH) && dbwebb-validate --version && dbwebb-validate --check
export PATH=$(PATH_ORIG)
# target: dbwebb-validate-run - Run tests with dbwebb-validate.
.PHONY: dbwebb-validate-run
dbwebb-validate-run:
@$(call HELPTEXT,$@)
export PATH=$(PATH) && dbwebb-validate --publish --publish-to build/webroot/ example
export PATH=$(PATH_ORIG)
# target: npm-install-dev - Install npm packages for development.
.PHONY: npm-install-dev
npm-install-dev: build-prepare
@$(call HELPTEXT,$@)
if [ -f package.json ]; then npm install --only=dev; fi
# target: npm-update-dev - Update npm packages for development.
.PHONY: npm-update-dev
npm-update-dev:
@$(call HELPTEXT,$@)
if [ -f package.json ]; then npm update --only=dev; fi
# target: composer-install-dev - Install composer packages for development.
.PHONY: composer-install-dev
composer-install-dev: build-prepare
@$(call HELPTEXT,$@)
if [ -f composer.json ]; then composer install; fi
# target: composer-update-dev - Update composer packages for development.
.PHONY: composer-update-dev
composer-update-dev:
@$(call HELPTEXT,$@)
if [ -f composer.json ]; composer update; fi
# target: tools-install-dev - Install tools for development.
.PHONY: tools-install-dev
tools-install-dev: build-prepare composer-install-dev npm-install-dev
@$(call HELPTEXT,$@)
# target: tools-update-dev - Update tools for development.
.PHONY: tools-update-dev
tools-update-dev: composer-update-dev npm-update-dev
@$(call HELPTEXT,$@)
# target: automated-tests-prepare - Prepare for automated tests.
.PHONY: automated-tests-prepare
automated-tests-prepare: build-prepare dbwebb-validate-install dbwebb-install npm-install-dev composer-install-dev
@$(call HELPTEXT,$@)
# target: automated-tests-check - Check version and environment for automated tests.
.PHONY: automated-tests-check
automated-tests-check: dbwebb-validate-check
@$(call HELPTEXT,$@)
# target: automated-tests-run - Run all automated tests.
.PHONY: automated-tests-run
automated-tests-run: dbwebb-validate-run dbwebb-testrepo
@$(call HELPTEXT,$@)
# target: dbwebb-validate - Execute dbwebb validate with arg1=what.
.PHONY: dbwebb-validate
dbwebb-validate:
@$(call HELPTEXT,$@)
bin/dbwebb-validate --publish --publish-to build/webroot/ $(arg1)