Skip to content
Snippets Groups Projects
Makefile 2.15 KiB
Newer Older
Christian Pointner's avatar
Christian Pointner committed
##
##  tank, Import and Store Files for AURA
Christian Pointner's avatar
Christian Pointner committed
##  Copyright (C) 2017-2020 Christian Pointner <equinox@helsinki.at>
Christian Pointner's avatar
Christian Pointner committed
##
Christian Pointner's avatar
Christian Pointner committed
##  This program is free software: you can redistribute it and/or modify
##  it under the terms of the GNU Affero General Public License as
##  published by the Free Software Foundation, either version 3 of the
##  License, or (at your option) any later version.
Christian Pointner's avatar
Christian Pointner committed
##
Christian Pointner's avatar
Christian Pointner committed
##  This program is distributed in the hope that it will be useful,
Christian Pointner's avatar
Christian Pointner committed
##  but WITHOUT ANY WARRANTY; without even the implied warranty of
##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Christian Pointner's avatar
Christian Pointner committed
##  GNU Affero General Public License for more details.
Christian Pointner's avatar
Christian Pointner committed
##
Christian Pointner's avatar
Christian Pointner committed
##  You should have received a copy of the GNU Affero General Public License
##  along with this program.  If not, see <https://www.gnu.org/licenses/>.
Christian Pointner's avatar
Christian Pointner committed
##

GOCMD := go
ifdef GOROOT
	GOCMD = $(GOROOT)/bin/go
Christian Pointner's avatar
Christian Pointner committed
endif

ifndef $(GOPATH)
    GOPATH=$(shell go env GOPATH)
    export GOPATH

SWAG = $(GOPATH)/bin/swag
SWAG_ARGS := -d api/v1/,cmd/tank/ -g api.go
EXECUTABLE := tank
version := $(shell grep -oP 'app\.Version = "\K(.*)(?=")' cmd/tank/main.go)

Christian Pointner's avatar
Christian Pointner committed
all: build
.PHONY: vet format ui build clean distclean
init.dev::
	go get -u github.com/swaggo/swag/cmd/swag
	go install github.com/swaggo/swag/cmd/swag@latest
Martina Müller's avatar
Martina Müller committed
	curl -sSfL https://github.com/pre-commit/pre-commit/releases/download/v3.7.0/pre-commit-3.7.0.pyz -o pre-commit.pyz && python3 pre-commit.pyz && rm -f pre-commit.pyz
Christian Pointner's avatar
Christian Pointner committed
vet:
	$(GOCMD) vet ./...
Christian Pointner's avatar
Christian Pointner committed

format:
	$(GOCMD) fmt ./...
	$(GOCMD) generate ./ui
fmt-api-docs:
robwa's avatar
robwa committed
	$(SWAG) fmt $(SWAG_ARGS)

api-docs:
	$(SWAG) init $(SWAG_ARGS) --pd -o api/docs
# build target actually depends on api-docs
# to allow building binary without generating api docs first, we put api/docs/docs.go under version control
# see #30
build: ui
	$(GOCMD) build -o $(EXECUTABLE) ./cmd/tank
	$(GOCMD) build -o $(EXECUTABLE) -tags=dev ./cmd/tank
test-all:
	gitlab-runner exec docker test-all

coverage:
	gitlab-runner exec docker test-all | grep 'ok.*of statements'

	git tag ${version}
	git push origin ${version}
	@echo "Release '${version}' tagged and pushed successfully."
Christian Pointner's avatar
Christian Pointner committed
clean:
	rm -f $(EXECUTABLE)

distclean: clean
	rm -f ui/assets_vfsdata.go