.PHONY: all check-license crossbuild build install test generate embedmd

SHELL=/bin/bash

GITHUB_URL=github.com/jsonnet-bundler/jsonnet-bundler
VERSION := $(shell git describe --tags --dirty --always)
OUT_DIR=_output
BIN?=jb
PKGS=$(shell go list ./... | grep -v /vendor/)

all: check-license build generate test

# Binaries
LDFLAGS := '-s -w -extldflags "-static" -X main.Version=${VERSION}'
cross: clean
	CGO_ENABLED=0 gox \
	  -output="$(OUT_DIR)/jb-{{.OS}}-{{.Arch}}" \
	  -ldflags=$(LDFLAGS) \
	  -arch="amd64 arm64 arm" -os="linux" \
	  -osarch="darwin/amd64" \
	  ./cmd/$(BIN)

static:
	CGO_ENABLED=0 go build -ldflags=${LDFLAGS} -o $(OUT_DIR)/$(BIN) ./cmd/$(BIN)

build:
	CGO_ENABLED=0 go build -o $(OUT_DIR)/$(BIN) ./cmd/$(BIN)

install: static
	@echo ">> copying $(BIN) into $(GOPATH)/bin/$(BIN)"
	cp $(OUT_DIR)/$(BIN) $(GOPATH)/bin/$(BIN)

# Tests
test:
	@echo ">> running all unit tests"
	go test -v $(PKGS)

test-integration:
	@echo ">> running all integration tests"
	go test -v -tags=integration $(PKGS)

# Documentation
generate: embedmd
	@echo ">> generating docs"
	@./scripts/generate-help-txt.sh
	$(GOPATH)/bin/embedmd -w `find ./ -path ./vendor -prune -o -name "*.md" -print`

check-license:
	@echo ">> checking license headers"
	@./scripts/check_license.sh

embedmd:
	pushd /tmp && GO111MODULES=on go get github.com/campoy/embedmd && popd

# Other
clean:
	rm -rf $(OUT_DIR) $(BIN)

drone:
	drone jsonnet --format
