MAKEFLAGS += --warn-undefined-variables SHELL := /bin/bash .SHELLFLAGS := -o pipefail -euc .DEFAULT_GOAL := install include Makefile.variables .PHONY: help help: @echo 'Management commands for cicdtest:' @echo @echo 'Usage:' @echo ' ## Develop / Test Commands' @echo ' make build Build yq binary.' @echo ' make install Install yq.' @echo ' make xcompile Build cross-compiled binaries of yq.' @echo ' make vendor Install dependencies using govendor.' @echo ' make format Run code formatter.' @echo ' make check Run static code analysis (lint).' @echo ' make test Run tests on project.' @echo ' make cover Run tests and capture code coverage metrics on project.' @echo ' make clean Clean the directory tree of produced artifacts.' @echo @echo ' ## Utility Commands' @echo ' make setup Configures Minishfit/Docker directory mounts.' @echo .PHONY: clean clean: @rm -rf bin build cover *.out ## prefix before other make targets to run in your local dev environment local: | quiet @$(eval DOCKRUN= ) @mkdir -p tmp @touch tmp/dev_image_id quiet: # this is silly but shuts up 'Nothing to be done for `local`' @: prepare: tmp/dev_image_id tmp/dev_image_id: Dockerfile.dev scripts/devtools.sh @mkdir -p tmp @docker rmi -f ${DEV_IMAGE} > /dev/null 2>&1 || true @docker build -t ${DEV_IMAGE} -f Dockerfile.dev . @docker inspect -f "{{ .ID }}" ${DEV_IMAGE} > tmp/dev_image_id # ---------------------------------------------- # build .PHONY: build build: build/dev .PHONY: build/dev build/dev: test *.go @mkdir -p bin/ ${DOCKRUN} go build --ldflags "$(LDFLAGS)" ${DOCKRUN} bash ./scripts/acceptance.sh ## Compile the project for multiple OS and Architectures. xcompile: check @rm -rf build/ @mkdir -p build ${DOCKRUN} bash ./scripts/xcompile.sh @find build -type d -exec chmod 755 {} \; || : @find build -type f -exec chmod 755 {} \; || : .PHONY: install install: build ${DOCKRUN} go install # Each of the fetch should be an entry within vendor.json; not currently included within project .PHONY: vendor vendor: tmp/dev_image_id ${DOCKRUN} govendor sync @chmod 664 vendor/vendor.json # ---------------------------------------------- # develop and test .PHONY: format format: vendor ${DOCKRUN} bash ./scripts/format.sh .PHONY: check check: format ${DOCKRUN} bash ./scripts/check.sh .PHONY: test test: check ${DOCKRUN} bash ./scripts/test.sh .PHONY: cover cover: check @rm -rf cover/ @mkdir -p cover ${DOCKRUN} bash ./scripts/coverage.sh @find cover -type d -exec chmod 755 {} \; || : @find cover -type f -exec chmod 644 {} \; || : .PHONY: build-docs build-docs: prepare mkdocs.yml mkdocs/* ${DOCKRUN} mkdocs build @find docs -type d -exec chmod 755 {} \; || : @find docs -type f -exec chmod 644 {} \; || : .PHONY: release release: xcompile ${DOCKRUN} bash ./scripts/publish.sh # ---------------------------------------------- # utilities .PHONY: setup setup: @bash ./scripts/setup.sh