mirror of
https://github.com/mikefarah/yq.git
synced 2024-12-19 20:19:04 +00:00
124 lines
3.1 KiB
Makefile
124 lines
3.1 KiB
Makefile
MAKEFLAGS += --warn-undefined-variables
|
|
SHELL := /bin/bash
|
|
.SHELLFLAGS := -o pipefail -euc
|
|
.DEFAULT_GOAL := install
|
|
ENGINE := $(shell { command -v podman || command -v docker; } 2>/dev/null)
|
|
|
|
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 to vendor directory.'
|
|
@echo ' make format Run code formatter.'
|
|
@echo ' make check Run static code analysis (lint).'
|
|
@echo ' make secure Run gosec.'
|
|
@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 ENGINERUN= )
|
|
@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
|
|
@${ENGINE} rmi -f ${DEV_IMAGE} > /dev/null 2>&1 || true
|
|
@${ENGINE} build -t ${DEV_IMAGE} -f Dockerfile.dev .
|
|
@${ENGINE} 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/
|
|
${ENGINERUN} go build --ldflags "$(LDFLAGS)"
|
|
${ENGINERUN} bash ./scripts/acceptance.sh
|
|
|
|
## Compile the project for multiple OS and Architectures.
|
|
xcompile: check
|
|
@rm -rf build/
|
|
@mkdir -p build
|
|
${ENGINERUN} bash ./scripts/xcompile.sh
|
|
@find build -type d -exec chmod 755 {} \; || :
|
|
@find build -type f -exec chmod 755 {} \; || :
|
|
|
|
.PHONY: install
|
|
install: build
|
|
${ENGINERUN} 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
|
|
@mkdir -p vendor
|
|
${ENGINERUN} go mod vendor
|
|
|
|
# ----------------------------------------------
|
|
# develop and test
|
|
|
|
.PHONY: format
|
|
format: vendor
|
|
${ENGINERUN} bash ./scripts/format.sh
|
|
|
|
|
|
.PHONY: spelling
|
|
spelling: format
|
|
${ENGINERUN} bash ./scripts/spelling.sh
|
|
|
|
.PHONY: secure
|
|
secure: spelling
|
|
${ENGINERUN} bash ./scripts/secure.sh
|
|
|
|
.PHONY: check
|
|
check: secure
|
|
${ENGINERUN} bash ./scripts/check.sh
|
|
|
|
|
|
|
|
.PHONY: test
|
|
test: check
|
|
${ENGINERUN} bash ./scripts/test.sh
|
|
|
|
.PHONY: cover
|
|
cover: check
|
|
@rm -rf cover/
|
|
@mkdir -p cover
|
|
${ENGINERUN} bash ./scripts/coverage.sh
|
|
@find cover -type d -exec chmod 755 {} \; || :
|
|
@find cover -type f -exec chmod 644 {} \; || :
|
|
|
|
|
|
.PHONY: release
|
|
release: xcompile
|
|
${ENGINERUN} bash ./scripts/publish.sh
|
|
|
|
# ----------------------------------------------
|
|
# utilities
|
|
|
|
.PHONY: setup
|
|
setup:
|
|
@bash ./scripts/setup.sh
|