SOURCE_DIRECTORY := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))

ARTIFACT_PATH := $(SOURCE_DIRECTORY)artifacts
DOCKER_IMAGE_NAME ?= "eff-docker-build"
DOCKER_CMD ?= make pack
NUGET_SOURCE ?= "https://api.nuget.org/v3/index.json"
NUGET_API_KEY ?= ""

clean:
	rm -rf $(ARTIFACT_PATH)/*

build: clean
	dotnet build -c Debug && \
	dotnet build -c Release

test: build
	# Debug and Release builds of method builders exercise different code paths
	dotnet test --no-build -c Debug && \
	dotnet test --no-build -c Release

pack: test
	dotnet pack -c Release -o $(ARTIFACT_PATH)

push:
	for nupkg in $(ARTIFACT_PATH)/*.nupkg; do \
		dotnet nuget push -s $(NUGET_SOURCE) -k $(NUGET_API_KEY) --skip-duplicate $$nupkg; \
	done

docker-build: clean
	docker build -t $(DOCKER_IMAGE_NAME) . && \
	docker run --rm -t \
			-v $(ARTIFACT_PATH):/repo/artifacts \
			$(DOCKER_IMAGE_NAME) \
			$(DOCKER_CMD)

	docker rmi -f $(DOCKER_IMAGE_NAME)

.DEFAULT_GOAL := pack