mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
120 lines
3.1 KiB
Makefile
120 lines
3.1 KiB
Makefile
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 yaml binary.'
|
|
@echo ' make install Install yaml.'
|
|
@echo ' make xcompile Build cross-compiled binaries of yaml.'
|
|
@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
|
|
|
|
veryclean: clean
|
|
rm -rf tmp
|
|
find vendor/* -maxdepth 0 -ignore_readdir_race -type d -exec rm -rf {} \;
|
|
|
|
## 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 -o bin/yaml --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} bash ./scripts/vendor.sh
|
|
@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
|