GIT_SHA ?=	$(shell git rev-parse HEAD)
GIT_TAG ?=	$(shell git describe --tags --always)
GIT_BRANCH ?=	$(shell git rev-parse --abbrev-ref HEAD)
LDFLAGS ?=	-X main.GitSha=$(GIT_SHA) -X main.GitTag=$(GIT_TAG) -X main.GitBranch=$(GIT_BRANCH)
VERSION ?=	$(shell grep 'VERSION =' main.go | cut -d'"' -f2)
AES_KEY ?=	my-dummy-aes-key

.PHONY: install
install:
	go install -v -ldflags '$(LDFLAGS)' .

.PHONY: docker.build
docker.build:
	docker build -t moul/sshportal .

.PHONY: integration
integration:
	cd ./examples/integration && make

.PHONY: _docker_install
_docker_install:
	CGO_ENABLED=1 go build -ldflags '-extldflags "-static" $(LDFLAGS)' -tags netgo -v -o /go/bin/sshportal

.PHONY: dev
dev:
	-go get github.com/githubnemo/CompileDaemon
	CompileDaemon -exclude-dir=.git -exclude=".#*" -color=true -command="./sshportal --debug --bind-address=:$(PORT) --aes-key=$(AES_KEY) $(EXTRA_RUN_OPTS)" .

.PHONY: test
test:
	go test -i .
	go test -v .

.PHONY: lint
lint:
	gometalinter --disable-all --enable=errcheck --enable=vet --enable=vetshadow --enable=golint --enable=gas --enable=ineffassign --enable=goconst --enable=goimports --enable=gofmt --exclude="should have comment" --enable=staticcheck --enable=gosimple --enable=misspell --deadline=20s .

.PHONY: backup
backup:
	mkdir -p data/backups
	cp sshportal.db data/backups/$(shell date +%s)-$(VERSION)-sshportal.sqlite

doc:
	dot -Tsvg ./.assets/overview.dot > ./.assets/overview.svg
	dot -Tsvg ./.assets/cluster-mysql.dot > ./.assets/cluster-mysql.svg
	dot -Tsvg ./.assets/flow-diagram.dot > ./.assets/flow-diagram.svg
