2018-11-29 00:03:03 +00:00
|
|
|
DIST := dist
|
|
|
|
IMPORT := git.kolaente.de/sofaraum/client
|
|
|
|
|
|
|
|
SED_INPLACE := sed -i
|
|
|
|
|
|
|
|
ifeq ($(OS), Windows_NT)
|
2018-12-07 22:50:35 +00:00
|
|
|
EXECUTABLE := sofa.exe
|
2018-11-29 00:03:03 +00:00
|
|
|
else
|
2018-12-07 22:50:35 +00:00
|
|
|
EXECUTABLE := sofa
|
2018-11-29 00:03:03 +00:00
|
|
|
UNAME_S := $(shell uname -s)
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
|
|
SED_INPLACE := sed -i ''
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
GOFILES := $(shell find . -name "*.go" -type f ! -path "./vendor/*" ! -path "*/bindata.go")
|
|
|
|
GOFMT ?= gofmt -s
|
|
|
|
|
|
|
|
GOFLAGS := -v -mod=vendor
|
|
|
|
EXTRA_GOFLAGS ?=
|
|
|
|
|
2018-12-07 23:43:26 +00:00
|
|
|
LDFLAGS := -X "cmd.Version=$(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" -X "main.Tags=$(TAGS)"
|
2018-11-29 00:03:03 +00:00
|
|
|
|
|
|
|
PACKAGES ?= $(filter-out git.kolaente.de/sofaraum/client/integrations,$(shell go list ./... | grep -v /vendor/))
|
|
|
|
SOURCES ?= $(shell find . -name "*.go" -type f)
|
|
|
|
|
|
|
|
TAGS ?=
|
|
|
|
|
|
|
|
TMPDIR := $(shell mktemp -d 2>/dev/null || mktemp -d -t 'sofaclient-temp')
|
|
|
|
|
|
|
|
ifeq ($(OS), Windows_NT)
|
2018-12-07 22:50:35 +00:00
|
|
|
EXECUTABLE := sofa.exe
|
2018-11-29 00:03:03 +00:00
|
|
|
else
|
2018-12-07 22:50:35 +00:00
|
|
|
EXECUTABLE := sofa
|
2018-11-29 00:03:03 +00:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(DRONE_TAG),)
|
|
|
|
VERSION ?= $(subst v,,$(DRONE_TAG))
|
|
|
|
else
|
|
|
|
ifneq ($(DRONE_BRANCH),)
|
|
|
|
VERSION ?= $(subst release/v,,$(DRONE_BRANCH))
|
|
|
|
else
|
|
|
|
VERSION ?= master
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
VERSION := $(shell echo $(VERSION) | sed 's/\//\-/g')
|
|
|
|
|
|
|
|
.PHONY: all
|
|
|
|
all: build
|
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
|
|
|
go clean ./...
|
|
|
|
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA)
|
|
|
|
|
|
|
|
.PHONY: test
|
|
|
|
test:
|
|
|
|
go test -cover -coverprofile cover.out $(PACKAGES)
|
|
|
|
go tool cover -html=cover.out -o cover.html
|
|
|
|
|
|
|
|
.PHONY: lint
|
|
|
|
lint:
|
|
|
|
@hash golint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
|
|
|
go install $(GOFLAGS) golang.org/x/lint/golint; \
|
|
|
|
fi
|
|
|
|
for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done;
|
|
|
|
|
|
|
|
.PHONY: fmt
|
2019-04-27 09:05:33 +00:00
|
|
|
fmt:
|
2018-11-29 00:03:03 +00:00
|
|
|
$(GOFMT) -w $(GOFILES)
|
|
|
|
|
|
|
|
.PHONY: fmt-check
|
2019-04-27 09:05:33 +00:00
|
|
|
fmt-check:
|
2018-11-29 00:03:03 +00:00
|
|
|
# get all go files and run go fmt on them
|
|
|
|
@diff=$$($(GOFMT) -d $(GOFILES)); \
|
|
|
|
if [ -n "$$diff" ]; then \
|
|
|
|
echo "Please run 'make fmt' and commit the result:"; \
|
|
|
|
echo "$${diff}"; \
|
|
|
|
exit 1; \
|
|
|
|
fi;
|
|
|
|
|
|
|
|
.PHONY: install
|
|
|
|
install: $(wildcard *.go)
|
|
|
|
go install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)'
|
|
|
|
|
|
|
|
.PHONY: build
|
|
|
|
build: $(EXECUTABLE)
|
|
|
|
|
|
|
|
$(EXECUTABLE): $(SOURCES)
|
|
|
|
go build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
|
|
|
|
|
|
|
|
.PHONY: release
|
|
|
|
release: release-dirs release-windows release-linux release-darwin release-check
|
|
|
|
|
|
|
|
.PHONY: release-dirs
|
|
|
|
release-dirs:
|
|
|
|
mkdir -p $(DIST)/binaries
|
|
|
|
|
|
|
|
.PHONY: release-windows
|
|
|
|
release-windows:
|
|
|
|
@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
2019-04-27 09:07:55 +00:00
|
|
|
go install $(GOFLAGS) src.techknowlogick.com/xgo; \
|
2018-11-29 00:03:03 +00:00
|
|
|
fi
|
2019-04-27 09:07:55 +00:00
|
|
|
xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out vikunja-$(VERSION) .
|
|
|
|
ifneq ($(DRONE_WORKSPACE),'')
|
2018-11-29 00:03:03 +00:00
|
|
|
mv /build/* $(DIST)/binaries
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: release-linux
|
|
|
|
release-linux:
|
|
|
|
@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
2019-04-27 09:07:55 +00:00
|
|
|
go install $(GOFLAGS) src.techknowlogick.com/xgo; \
|
2018-11-29 00:03:03 +00:00
|
|
|
fi
|
2019-04-27 09:07:55 +00:00
|
|
|
xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out vikunja-$(VERSION) .
|
|
|
|
ifneq ($(DRONE_WORKSPACE),'')
|
2018-11-29 00:03:03 +00:00
|
|
|
mv /build/* $(DIST)/binaries
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: release-darwin
|
|
|
|
release-darwin:
|
|
|
|
@hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
2019-04-27 09:07:55 +00:00
|
|
|
go install $(GOFLAGS) src.techknowlogick.com/xgo; \
|
2018-11-29 00:03:03 +00:00
|
|
|
fi
|
2019-04-27 09:07:55 +00:00
|
|
|
xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out vikunja-$(VERSION) .
|
|
|
|
ifneq ($(DRONE_WORKSPACE),'')
|
2018-11-29 00:03:03 +00:00
|
|
|
mv /build/* $(DIST)/binaries
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: release-check
|
|
|
|
release-check:
|
|
|
|
cd $(DIST)/binaries; $(foreach file,$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*),sha256sum $(notdir $(file)) > $(notdir $(file)).sha256;)
|
|
|
|
|
|
|
|
.PHONY: misspell-check
|
|
|
|
misspell-check:
|
|
|
|
@hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
|
|
|
go install $(GOFLAGS) github.com/client9/misspell/cmd/misspell; \
|
|
|
|
fi
|
|
|
|
for S in $(GOFILES); do misspell -error $$S || exit 1; done;
|
|
|
|
|
|
|
|
.PHONY: ineffassign-check
|
|
|
|
ineffassign-check:
|
|
|
|
@hash ineffassign > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
|
|
|
go install $(GOFLAGS) github.com/gordonklaus/ineffassign; \
|
|
|
|
fi
|
|
|
|
for S in $(GOFILES); do ineffassign $$S || exit 1; done;
|
|
|
|
|
|
|
|
.PHONY: gocyclo-check
|
|
|
|
gocyclo-check:
|
|
|
|
@hash gocyclo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
|
|
|
go install $(GOFLAGS) github.com/fzipp/gocyclo; \
|
|
|
|
fi
|
|
|
|
for S in $(GOFILES); do gocyclo -over 14 $$S || exit 1; done;
|