# https://tech.davis-hansson.com/p/make/ SHELL := bash .ONESHELL: .SILENT: .SHELLFLAGS := -eux -o pipefail -c .DELETE_ON_ERROR: .DEFAULT_GOAL := all MAKEFLAGS += --warn-undefined-variables MAKEFLAGS += --no-builtin-rules .PHONY: all all: lint ## Run lint and test (default goal) .PHONY: lint lint: ## Lint all source code poetry run yapf -q *.py poetry run pylint *.py poetry run mypy *.py .PHONY: e2e-with-kind e2e-with-kind: ## Run E2E tests against running kind (K8s in Docker) instance function cleanup { (kubectl delete namespace e2e || true) } trap cleanup EXIT # no resources and empty cluster should have no stale resources poetry run python kube-stale-resources.py --blacklist e2e/blacklist-kind-empty.txt -f e2e/resources-kind-empty.yml # some resources in VCS and empty cluster should have no stale resources kubectl apply -f e2e/resources-kind-one.yml poetry run python kube-stale-resources.py --blacklist e2e/blacklist-kind-empty.txt -f e2e/resources-kind-one.yml cleanup # some resources NOT in VCS and empty cluster should have stale resources kubectl apply -f e2e/resources-kind-one.yml (poetry run python kube-stale-resources.py --blacklist e2e/blacklist-kind-empty.txt -f e2e/resources-kind-empty.yml && exit 1 || exit 0) cleanup .PHONY: help help: ## Print this help text @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'