# Copyright 2019 The Kubernetes Authors.
# SPDX-License-Identifier: Apache-2.0

MYGOBIN := $(shell go env GOPATH)/bin
GOPATH := $(shell go env GOPATH)
export PATH := $(MYGOBIN):$(PATH)

.PHONY: generate license fix vet fmt test lint tidy openapi schema
all: generate license fix vet fmt test lint tidy

fix:
	go fix ./...

fmt:
	go fmt ./...

generate:
	(which $(GOPATH)/bin/stringer || go get golang.org/x/tools/cmd/stringer)
	go generate ./...

license:
	(which $(GOPATH)/bin/addlicense || go get github.com/google/addlicense)
	$(GOPATH)/bin/addlicense  -y 2019 -c "The Kubernetes Authors." -f LICENSE_TEMPLATE .

tidy:
	go mod tidy

lint:
	(which $(GOPATH)/bin/golangci-lint || go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.19.1)
	$(GOPATH)/bin/golangci-lint run ./...

test:
	go test -cover ./...

vet:
	go vet ./...

openapi:
	./hack/fetchOpenApiData.sh

$(MYGOBIN)/kind:
	( \
		set -e; \
		d=$(shell mktemp -d); cd $$d; \
		wget -O ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-$(shell uname)-amd64; \
		chmod +x ./kind; \
		mv ./kind $(MYGOBIN); \
		rm -rf $$d; \
	)

$(MYGOBIN)/kpt:
	../hack/install_kpt.sh 0.34.0 $(MYGOBIN)

API_VERSION="v1.19.1"
schema: $(MYGOBIN)/kind $(MYGOBIN)/kpt
	cp $(HOME)/.kube/config /tmp/kubeconfig.txt | true
	$(MYGOBIN)/kind create cluster --image kindest/node:$(API_VERSION) --name=getopenapidata
	$(MYGOBIN)/kpt live  fetch-k8s-schema  --pretty-print > /tmp/new_swagger.json
	$(MYGOBIN)/kind delete cluster --name=getopenapidata
	cp /tmp/kubeconfig.txt $(HOME)/.kube/config | true
	cp /tmp/new_swagger.json openapi/kubernetesapi/swagger.json


