help:
	@echo "release      - build binaries using cross compliing for the support architectures"
	@echo "build        - build the binary as a local executable"
	@echo "install      - build and install the binary into \$$GOPATH/bin"
	@echo "run          - runs voltctl using the command specified as \$$CMD"
	@echo "lint         - run static code analysis"
	@echo "test         - run unity tests"
	@echo "clean        - remove temporary and generated files"

internal/pkg/commands/voltha_v1_pb.go: assets/protosets/voltha_v1.pb
	@echo "/*" > $@
	@echo " * Copyright 2019-present Open Networking Foundation" >> $@
	@echo " *" >> $@
	@echo " * Licensed under the Apache License, Version 2.0 (the "License");" >> $@
	@echo " * you may not use this file except in compliance with the License." >> $@
	@echo " * You may obtain a copy of the License at" >> $@
	@echo " *" >> $@
	@echo " * http://www.apache.org/licenses/LICENSE-2.0" >> $@
	@echo " *" >> $@
	@echo " * Unless required by applicable law or agreed to in writing, software" >> $@
	@echo " * distributed under the License is distributed on an "AS IS" BASIS," >> $@
	@echo " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." >> $@
	@echo " * See the License for the specific language governing permissions and" >> $@
	@echo " * limitations under the License." >> $@
	@echo " */" >> $@
	@echo "package commands" >> $@
	@echo "" >> $@
	@echo "var V1Descriptor = []byte{" >> $@
	hexdump -ve '1/1 "0x%02x,"' assets/protosets/voltha_v1.pb | fold -w 60 -s >> $@
	@echo "}" >> $@
	@go fmt $@

internal/pkg/commands/voltha_v2_pb.go: assets/protosets/voltha_v2.pb
	@echo "/*" > $@
	@echo " * Copyright 2019-present Open Networking Foundation" >> $@
	@echo " *" >> $@
	@echo " * Licensed under the Apache License, Version 2.0 (the "License");" >> $@
	@echo " * you may not use this file except in compliance with the License." >> $@
	@echo " * You may obtain a copy of the License at" >> $@
	@echo " *" >> $@
	@echo " * http://www.apache.org/licenses/LICENSE-2.0" >> $@
	@echo " *" >> $@
	@echo " * Unless required by applicable law or agreed to in writing, software" >> $@
	@echo " * distributed under the License is distributed on an "AS IS" BASIS," >> $@
	@echo " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." >> $@
	@echo " * See the License for the specific language governing permissions and" >> $@
	@echo " * limitations under the License." >> $@
	@echo " */" >> $@
	@echo "package commands" >> $@
	@echo "" >> $@
	@echo "var V2Descriptor = []byte{" >> $@
	hexdump -ve '1/1 "0x%02x,"' assets/protosets/voltha_v2.pb | fold -w 60 -s >> $@
	@echo "}" >> $@
	@go fmt $@

encode-protosets: internal/pkg/commands/voltha_v1_pb.go internal/pkg/commands/voltha_v2_pb.go

VERSION=$(shell cat ./VERSION)
GITCOMMIT=$(shell git rev-parse HEAD)
ifeq ($(shell git ls-files --others --modified --exclude-standard 2>/dev/null | wc -l | sed -e 's/ //g'),0)
GITDIRTY=false
else
GITDIRTY=true
endif
GOVERSION=$(shell go version 2>&1 | sed -E  's/.*(go[0-9]+\.[0-9]+\.[0-9]+).*/\1/g')
HOST_OS=$(shell uname -s | tr A-Z a-z)
ifeq ($(shell uname -m),x86_64)
	HOST_ARCH ?= amd64
else
	HOST_ARCH ?= $(shell uname -m)
endif
BUILDTIME=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")

LDFLAGS=-ldflags \
	'-X "github.com/opencord/voltctl/internal/pkg/cli/version.Version=$(VERSION)"  \
	 -X "github.com/opencord/voltctl/internal/pkg/cli/version.VcsRef=$(GITCOMMIT)"  \
	 -X "github.com/opencord/voltctl/internal/pkg/cli/version.VcsDirty=$(GITDIRTY)"  \
	 -X "github.com/opencord/voltctl/internal/pkg/cli/version.GoVersion=$(GOVERSION)"  \
	 -X "github.com/opencord/voltctl/internal/pkg/cli/version.Os=$(HOST_OS)" \
	 -X "github.com/opencord/voltctl/internal/pkg/cli/version.Arch=$(HOST_ARCH)" \
	 -X "github.com/opencord/voltctl/internal/pkg/cli/version.BuildTime=$(BUILDTIME)"'

# Release related items
# Generates binaries in $RELEASE_DIR with name $RELEASE_NAME-$RELEASE_OS_ARCH
# Inspired by: https://github.com/kubernetes/minikube/releases
RELEASE_DIR     ?= release
RELEASE_NAME    ?= voltctl
RELEASE_OS_ARCH ?= linux-amd64 windows-amd64 darwin-amd64
RELEASE_BINS    := $(foreach rel,$(RELEASE_OS_ARCH),$(RELEASE_DIR)/$(RELEASE_NAME)-$(subst -dev,_dev,$(VERSION))-$(rel))

# Functions to extract the OS/ARCH
rel_ver   = $(word 2, $(subst -, ,$(notdir $@)))
rel_os    = $(word 3, $(subst -, ,$(notdir $@)))
rel_arch  = $(word 4, $(subst -, ,$(notdir $@)))

# Default is GO111MODULE=auto, which will refuse to use go mod if running
# go less than 1.13.0 and repo is checked out in gopath. For now, force
# module usage.
export GO111MODULE=on

$(RELEASE_BINS):
	mkdir -p $(RELEASE_DIR)
	GOOS=$(rel_os) GOARCH=$(rel_arch) \
	       go build -mod=vendor -v $(LDFLAGS) -o "$@" cmd/voltctl/voltctl.go

release: $(RELEASE_BINS)

build:
	go build -mod=vendor $(LDFLAGS) cmd/voltctl/voltctl.go

install:
	go install -mod=vendor $(LDFLAGS) cmd/voltctl/voltctl.go

run:
	go run -mod=vendor $(LDFLAGS) cmd/voltctl/voltctl.go $(CMD)

lint-style:
ifeq (,$(shell which gofmt))
	go get -u github.com/golang/go/src/cmd/gofmt
endif
	@echo -n "Running style check ... "
	@gofmt_out="$$(gofmt -l $$(find . -name '*.go' -not -path './vendor/*'))" ;\
	if [ ! -z "$$gofmt_out" ]; then \
	  echo "$$gofmt_out" ;\
	  echo "Style check failed on one or more files ^, run 'go fmt' to fix." ;\
	  exit 1 ;\
        fi
	@echo "OK"

lint-sanity:
	@echo -n "Running sanity check ... "
	@go vet -mod=vendor ./...
	@echo "OK"

lint: lint-style lint-sanity

test:
	@mkdir -p ./tests/results
	@set +e; \
	go test -mod=vendor -v -coverprofile ./tests/results/go-test-coverage.out -covermode count  ./... 2>&1 | tee ./tests/results/go-test-results.out ;\
	RETURN=$$? ;\
	go-junit-report < ./tests/results/go-test-results.out > ./tests/results/go-test-results.xml ;\
	gocover-cobertura < ./tests/results/go-test-coverage.out > ./tests/results/go-test-coverage.xml ;\
	exit $$RETURN

view-coverage:
	go tool cover -html ./tests/results/go-test-coverage.out

clean:
	rm -rf voltctl voltctl.cp release
