blob: 5308fbfd9110993af8e1deb31ae92199eb4e915c [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
-include .env
#VERSION := $(shell git describe --tags)
#BUILD := $(shell git rev-parse --short HEAD)
PROJECTNAME := $(shell basename "$(PWD)")
# Go related variables.
GOBASE := $(shell pwd)
#GOPATH := $(GOBASE)/vendor:$(GOBASE)
GOPATH := $${HOME}/.mvnGoLang/.go_path:$(GOBASE)
GOBIN := $(GOBASE)/bin
GOFILES := $(wildcard *.go)
# Mvn related variables
MVNBIN := ../mvnw
# Use linker flags to provide version/build settings
#LDFLAGS=-ldflags "-X=main.Version=$(VERSION) -X=main.Build=$(BUILD)"
# Redirect error output to a file, so we can show it in development mode.
STDERR := /tmp/.$(PROJECTNAME)-stderr.txt
# Make is verbose in Linux. Make it silent.
MAKEFLAGS += --silent
## install: Install missing dependencies. Runs `mvn verify` internally.
install: go-get
## watch: Run given command when code changes. e.g; make watch run="echo 'hey'"
watch:
@GOPATH=$(GOPATH) GOBIN=$(GOBIN) yolo -i . -e vendor -e bin -c "$(run)"
## compile: Compile the binary.
compile: target
@-touch $(STDERR)
@-rm $(STDERR)
@-$(MAKE) -s go-compile 2> $(STDERR)
@cat $(STDERR) | sed -e '1s/.*/\nError:\n/' | sed 's/make\[.*/ /' | sed "/^/s/^/ /" 1>&2
## test: Runs test. Runs `mvn test` internally.
test: compile
$(MVNBIN) test
## test: Runs gotestsum.
test-readable: compile
@GOPATH=$(GOPATH) GOBIN=$(GOBIN) gotestsum ./...
test-readable-mvn: compile
$(MVNBIN) mvn-golang-wrapper:custom@readable-test
## exec: Run given command, wrapped with custom GOPATH. e.g; make exec run="go test ./..."
exec:
@GOPATH=$(GOPATH) GOBIN=$(GOBIN) $(run)
## clean: Clean build files. Runs `mvn clean` internally.
clean:
@-$(MAKE) go-clean
go-compile: go-get go-build
go-build: go-fmt
@echo " > Building binary..."
$(MVNBIN) compile
go-get:
@echo " > Checking if there is any missing dependencies..."
$(MVNBIN) verify
go-generate:
@GOPATH=$(GOPATH) GOBIN=$(GOBIN) go generate ./...
go-install: go-build
$(MVNBIN) install
go-clean:
@echo " > Cleaning build cache"
$(MVNBIN) clean
go-fmt:
@GOPATH=$(GOPATH) GOBIN=$(GOBIN) go fmt ./...
.PHONY: help
all: help
help: Makefile
@echo
@echo " Choose a command run in "$(PROJECTNAME)":"
@echo
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'
@echo