#
# SPDX-FileCopyrightText: 2020-present Intel Corporation
# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
# SPDX-License-Identifier: LicenseRef-ONF-Member-1.01
#
define PROJECT_HELP_MSG
Usage:
    make help                   show this message
    make clean                  remove intermediate files
	make test					
endef
export PROJECT_HELP_MSG

SHELL = bash -eu -o pipefail

VERSION ?= $(shell cat ./VERSION)
CONTAINER_NAME ?= $(notdir $(abspath .))

DOCKER_REGISTRY          ?=
DOCKER_REPOSITORY        ?=
DOCKER_BUILD_ARGS        ?= --rm --force-rm
DOCKER_TAG               ?= ${VERSION}
DOCKER_IMAGENAME         := ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${CONTAINER_NAME}:${DOCKER_TAG}

DOCKER_LABEL_VCS_URL     ?= $(shell git remote get-url $(shell git remote))
DOCKER_LABEL_VCS_REF     ?= $(shell git diff-index --quiet HEAD -- && git rev-parse HEAD || echo "unknown")
DOCKER_LABEL_COMMIT_DATE ?= $(shell git diff-index --quiet HEAD -- && git show -s --format=%cd --date=iso-strict HEAD || echo "unknown" )
DOCKER_LABEL_BUILD_DATE  ?= $(shell date -u "+%Y-%m-%dT%H:%M:%SZ")

VENV = venv
PYTHON = $(VENV)/bin/python3
PIP = $(VENV)/bin/pip

all: test

help:
	echo "$$PROJECT_HELP_MSG" | less

$(VENV): $(VENV)/touchfile

$(VENV)/touchfile: requirements.txt
	test -d $(VENV) || python3 -m venv $(VENV)
	. $(VENV)/bin/activate; pip install -Ur requirements.txt
	touch $(VENV)/touchfile

$(VENV)/bin/activate: requirements.txt
	python3 -m venv $(VENV)
	$(PIP) install -r requirements.txt

freeze:
	pip3 freeze | grep -v "pkg-resources" > requirements.txt

docker-build: $(VENV)
	docker build $(DOCKER_BUILD_ARGS) \
		-t $(DOCKER_IMAGENAME) \
		--build-arg org_label_schema_version="${VERSION}" \
    	--build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
    	--build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
    	--build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
    	--build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
		-f docker/Dockerfile .

docker-push:
	docker push $(DOCKER_IMAGENAME)

docker-run:
	docker run \
		--name $(CONTAINER_NAME) \
		--rm \
		$(DOCKER_IMAGENAME) \
		--user="abc" --password="xyz"

lint:
	flake8 --exclude=.tox network_diag

test: docker-build


CLEANUP = *.pyc $(VENV)
clean:
	rm -rf ${CLEANUP}

.PHONY: run clean

