# -*- makefile -*-
# -----------------------------------------------------------------------
# Copyright 2016-2023 Open Networking Foundation (ONF) and the ONF Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -----------------------------------------------------------------------

.DEFAULT_GOAL := help

##-------------------##
##---]  GLOBALS  [---##
##-------------------##

##--------------------##
##---]  INCLUDES  [---##
##--------------------##
include config.mk
include makefiles/include.mk

# Variables
VERSION                    ?= $(shell cat ./VERSION)

## -----------------------------------------------------------------------
## Local Development Helpers
## -----------------------------------------------------------------------
.PHONY: local-protos
local-protos:
	@mkdir -p python/local_imports
ifdef LOCAL_PROTOS
	$(RM) -r vendor/github.com/opencord/voltha-protos
	mkdir -p vendor/github.com/opencord/voltha-protos/v5/go
	cp -r ${LOCAL_PROTOS}/go/* vendor/github.com/opencord/voltha-protos/v5/go
	$(RM) -r python/local_imports/voltha-protos
	mkdir -p python/local_imports/voltha-protos/dist
	cp ${LOCAL_PROTOS}/dist/*.tar.gz python/local_imports/voltha-protos/dist/
endif

## -----------------------------------------------------------------------
## build the library
## -----------------------------------------------------------------------
build: local-protos
	$(call banner-enter,Target $@)
	${GO} build -mod=vendor ./...
	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
lint-mod:
	$(call banner-entry,Target $@)
	@echo "Running dependency check..."
	@${GO} mod verify
	@echo "Dependency check OK. Running vendor check..."
	@git status > /dev/null
	@git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Staged or modified files must be committed before running this test" && git status -- go.mod go.sum vendor && exit 1)
	@[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files must be cleaned up before running this test" && git status -- go.mod go.sum vendor && exit 1)

	$(HIDE)$(MAKE) --no-print-directory mod-update

	@git status > /dev/null
	@git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Modified files detected after running go mod tidy / go mod vendor" && git status -- go.mod go.sum vendor && git checkout -- go.mod go.sum vendor && exit 1)
	@[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files detected after running go mod tidy / go mod vendor" && git status -- go.mod go.sum vendor && git checkout -- go.mod go.sum vendor && exit 1)
	@echo "Vendor check OK."
	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
.PHONY: mod-update
mod-update: mod-tidy mod-vendor

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
.PHONY: mod-tidy
mod-tidy :
	$(call banner-enter,Target $@)
	${GO} mod tidy
	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
.PHONY: mod-vendor
mod-vendor : mod-tidy
mod-vendor :
	$(call banner-enter,Target $@)
	$(if $(LOCAL_FIX_PERMS),chmod o+w $(CURDIR))
	${GO} mod vendor
	$(if $(LOCAL_FIX_PERMS),chmod o-w $(CURDIR))
	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
lint: lint-mod

## -----------------------------------------------------------------------
## Coverage report: Static code analysis
## -----------------------------------------------------------------------
sca:
	@$(RM) -r ./sca-report
	@mkdir -p ./sca-report
	@echo "Running static code analysis..."
	@${GOLANGCI_LINT} run --deadline=4m --out-format junit-xml ./... | tee ./sca-report/sca-report.xml
	@echo ""
	@echo "Static code analysis OK"

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
test: local-protos

	$(call banner-enter,Target $@)
	@mkdir -p ./tests/results

        # No stream redirects, exit with shell status
	$(MAKE) test-go

        # Redirect I/O, ignore shell exit status (for now)
	$(MAKE) test-go-cover

	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
.PHONY: test-go
test-go :

	$(call banner-enter,Target $@)
	@echo "** Testing attempt #1: exit-with-error-status: enabled"
	-$(GO) test -mod=vendor ./...
	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
.PHONY: test-go-cover
test-go-cover : gen-coverage-coverprofile gen-coverage-junit gen-coverage-cobertura

## -----------------------------------------------------------------------
## Intent: Generate coverprofile data
## -----------------------------------------------------------------------
cover-dir      := ./tests/results
go-cover-out   := $(cover-dir)/go-test-coverage.out
go-result-out := $(cover-dir)/go-test-results.out

.PHONY: gen-coverage-coverprofile
gen-coverage-coverprofile:

	$(call banner-enter,Target $@)
	@echo "** Testing attempt #2: exit-with-error-status: disabled"

        # Fix docker volume perms if building locally
	touch "$(go-cover-out)"
	$(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-cover-out)")

        # Fix docker volume perms if building locally
	$(if $(LOCAL_FIX_PERMS),touch "$(go-result-out)")
	$(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-result-out)")

        # ------------------------------------------ 
        # set -euo pipefail else tee masks $? return
        # ------------------------------------------
	@echo '** Running test coverage: exit-on-error is currently disabled'
	-(\
	    set -euo pipefail; \
	    $(GO) test -mod=vendor -v -coverprofile "$(go-cover-out)" -covermode count ./... 2>&1 | tee "$(go-result-out)" \
	)  

	$(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-result-out)")
	$(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-cover-out)")

	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## Intent: Morph coverage data into junit/xml content
## -----------------------------------------------------------------------
go-results-xml  := $(cover-dir)/go-test-results.xml

.PHONY: gen-coverage-junit
gen-coverage-junit : gen-coverage-coverprofile
gen-coverage-junit:
	$(call banner-enter,Target $@)

        # Fix docker volume perms if building locally
	$(if $(LOCAL_FIX_PERMS),touch "$(go-results-xml)")
	$(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-results-xml)")

	${GO_JUNIT_REPORT} < $(go-result-out) > "$(go-results-xml)"

	$(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-results-xml)")
	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## Intent: Morph coverage data into cobertura xml
## -----------------------------------------------------------------------
go-cover-xml := $(cover-dir)/go-test-coverage.xml

.PHONY: gen-coverage-cobertura
gen-coverage-cobertura : gen-coverage-junit
gen-coverage-cobertura :

	$(call banner-enter,Target $@)

        # Fix docker volume perms if building locally
	$(if $(LOCAL_FIX_PERMS),touch "$(go-cover-xml)")
	$(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-cover-xml)")

	${GOCOVER_COBERTURA} < "$(go-cover-out)" > "$(go-cover-xml)"

	$(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-cover-xml)")
	$(call banner-leave,Target $@)

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
distclean:
	$(RM) -r ./sca-report ./tests

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
clean :: distclean

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
sterile :: clean

## -----------------------------------------------------------------------
## -----------------------------------------------------------------------
help ::
	@echo "Usage: make [<target>]"
	@echo "where available targets are:"
	@echo
	@echo "build                : Build the library"
	@echo "clean                : Remove files created by the build"
	@echo "distclean            : Remove build and testing artifacts and reports"
	@echo "lint-mod             : Verify the integrity of the 'mod' files"
	@echo "mod-update           : Update go.mod and the vendor directory"
	@echo "test                 : Generate reports for all go tests"
	@echo
	@echo '[REPORT: coverage]'
	@echo '  gen-coverage-coverprofile    Generate profiling data'
	@echo '  gen-coverage-junit           Generate junit coverage report'
	@echo '  gen-coverage-cobertura       Generate cobertura report'

# [EOF]

