#
# github.com/docker/cli
#
# Makefile for developing using Docker
#

# Overridable env vars
DOCKER_CLI_MOUNTS ?= -v "$(CURDIR)":/go/src/github.com/docker/cli
DOCKER_CLI_CONTAINER_NAME ?=
DOCKER_CLI_GO_BUILD_CACHE ?= y
DOCKER_SOCK ?= $(or $(patsubst unix://%,%,$(filter unix://%,$(shell docker context inspect --format '{{.Endpoints.docker.Host}}'))),/var/run/docker.sock)

# Sets the name of the company that produced the windows binary.
PACKAGER_NAME ?=

DEV_DOCKER_IMAGE_NAME = docker-cli-dev$(IMAGE_TAG)
E2E_IMAGE_NAME = docker-cli-e2e
ENGINE_VERSION ?=
CACHE_VOLUME_NAME := docker-cli-dev-cache
ifeq ($(DOCKER_CLI_GO_BUILD_CACHE),y)
DOCKER_CLI_MOUNTS += -v "$(CACHE_VOLUME_NAME):/root/.cache/go-build"
endif
VERSION ?= $(shell cat VERSION)-dev
ENVVARS = -e VERSION=$(VERSION) -e GITCOMMIT -e PLATFORM -e TESTFLAGS -e TESTDIRS -e GOOS -e GOARCH -e GOARM -e ENGINE_VERSION

# Some Dockerfiles use features that are only supported with BuildKit enabled
export DOCKER_BUILDKIT=1

# build docker image (dockerfiles/Dockerfile.build)
.PHONY: build_docker_image
build_docker_image:
	# build dockerfile from stdin so that we don't send the build-context; source is bind-mounted in the development environment
	cat ./dockerfiles/Dockerfile.dev | docker build ${DOCKER_BUILD_ARGS} --build-arg=GO_VERSION -t $(DEV_DOCKER_IMAGE_NAME) -

DOCKER_RUN_NAME_OPTION := $(if $(DOCKER_CLI_CONTAINER_NAME),--name $(DOCKER_CLI_CONTAINER_NAME),)
DOCKER_RUN := docker run --rm $(ENVVARS) $(DOCKER_CLI_MOUNTS) $(DOCKER_RUN_NAME_OPTION)

.PHONY: binary
binary: ## build executable
	PACKAGER_NAME=$(PACKAGER_NAME) docker buildx bake binary

build: binary ## alias for binary

plugins: ## build the CLI plugin examples
	docker buildx bake plugins

plugins-cross: ## build the CLI plugin examples for all platforms
	docker buildx bake plugins-cross

.PHONY: clean
clean: build_docker_image ## clean build artifacts
	$(DOCKER_RUN) $(DEV_DOCKER_IMAGE_NAME) make clean
	docker volume rm -f $(CACHE_VOLUME_NAME)

.PHONY: cross
cross:
	PACKAGER_NAME=$(PACKAGER_NAME) docker buildx bake cross

.PHONY: dynbinary
dynbinary: ## build dynamically linked binary
	USE_GLIBC=1 PACKAGER_NAME=$(PACKAGER_NAME)  docker buildx bake dynbinary

.PHONY: dev
dev: build_docker_image ## start a build container in interactive mode for in-container development
	$(DOCKER_RUN) -it \
		--mount 'type=bind,src=$(DOCKER_SOCK),dst=/var/run/docker.sock' \
		$(DEV_DOCKER_IMAGE_NAME)

shell: dev ## alias for dev

.PHONY: lint
lint: ## run linters
	docker buildx bake lint

.PHONY: shellcheck
shellcheck: ## run shellcheck validation
	docker buildx bake shellcheck

.PHONY: fmt
fmt: ## run gofumpt
	$(DOCKER_RUN) $(DEV_DOCKER_IMAGE_NAME) make fmt

.PHONY: vendor
vendor: ## update vendor with go modules
	$(eval $@_TMP_OUT := $(shell mktemp -d -t dockercli-output.XXXXXXXXXX))
	docker buildx bake --set "*.output=$($@_TMP_OUT)" update-vendor
	rm -rf ./vendor
	cp -R "$($@_TMP_OUT)"/out/* .
	rm -rf $($@_TMP_OUT)/*

.PHONY: validate-vendor
validate-vendor: ## validate vendor
	docker buildx bake validate-vendor

.PHONY: mod-outdated
mod-outdated: ## check outdated dependencies
	docker buildx bake mod-outdated

.PHONY: authors
authors: ## generate AUTHORS file from git history
	docker buildx bake update-authors

.PHONY: manpages
manpages: build_docker_image ## generate man pages from go source and markdown
	$(DOCKER_RUN) -it $(DEV_DOCKER_IMAGE_NAME) make manpages

.PHONY: mddocs
mddocs: build_docker_image ## generate markdown files from go source
	$(DOCKER_RUN) -it $(DEV_DOCKER_IMAGE_NAME) make mddocs

.PHONY: yamldocs
yamldocs: build_docker_image ## generate documentation YAML files consumed by docs repo
	$(DOCKER_RUN) $(DEV_DOCKER_IMAGE_NAME) make yamldocs

.PHONY: test ## run unit and e2e tests
test: test-unit test-e2e

.PHONY: test-unit
test-unit: ## run unit tests
	docker buildx bake test

.PHONY: test-coverage
test-coverage: ## run test with coverage
	docker buildx bake test-coverage

.PHONY: build-e2e-image
build-e2e-image:
	mkdir -p $(CURDIR)/build/coverage
	IMAGE_NAME=$(E2E_IMAGE_NAME) VERSION=$(VERSION) docker buildx bake e2e-image

.PHONY: test-e2e
test-e2e: test-e2e-local test-e2e-connhelper-ssh ## run all e2e tests

.PHONY: test-e2e-local
test-e2e-local: build-e2e-image # run experimental e2e tests
	docker run --rm $(ENVVARS) \
		--mount type=bind,src=$(CURDIR)/build/coverage,dst=/tmp/coverage \
		--mount 'type=bind,src=$(DOCKER_SOCK),dst=/var/run/docker.sock' \
		$(E2E_IMAGE_NAME)

.PHONY: test-e2e-connhelper-ssh
test-e2e-connhelper-ssh: build-e2e-image # run experimental SSH-connection helper e2e tests
	docker run --rm $(ENVVARS) -e TEST_CONNHELPER=ssh \
		--mount type=bind,src=$(CURDIR)/build/coverage,dst=/tmp/coverage \
		--mount 'type=bind,src=$(DOCKER_SOCK),dst=/var/run/docker.sock' \
		$(E2E_IMAGE_NAME)

.PHONY: help
help: ## print this help
	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9_-]+:.*?## / {gsub("\\\\n",sprintf("\n%22c",""), $$2);printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
