summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile93
1 files changed, 68 insertions, 25 deletions
diff --git a/Makefile b/Makefile
index 5836337..3a501dd 100644
--- a/Makefile
+++ b/Makefile
@@ -1,38 +1,81 @@
-.PHONY: dev setup build install image test release clean
+-include environ.inc
+.PHONY: help deps dev build install image release test clean clean-all
-CGO_ENABLED=0
-VERSION=$(shell git describe --abbrev=0 --tags)
-COMMIT=$(shell git rev-parse --short HEAD)
+export CGO_ENABLED=0
+VERSION=$(shell git describe --abbrev=0 --tags 2>/dev/null || echo "0.0.0")
+COMMIT=$(shell git rev-parse --short HEAD || echo "HEAD")
+BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
+GOCMD=go
+GOVER=$(shell go version | grep -o -E 'go1\.17\.[0-9]+')
-all: dev
+DESTDIR=/usr/local/bin
-dev: build
- @./tube -v
+ifeq ($(BRANCH), master)
+IMAGE := prologic/tube
+TAG := latest
+else
+IMAGE := prologic/tube
+TAG := dev
+endif
-setup:
- @go get github.com/GeertJohan/go.rice/rice
+all: help
-build: clean
- @command -v rice > /dev/null || make setup
- @go generate $(shell go list)/...
- @go build \
- -tags "netgo static_build" -installsuffix netgo \
- -ldflags "-w -X main.Version=$(VERSION) -X main.Commit=$(COMMIT)" \
+.PHONY: help
+
+help: ## Show this help message
+ @echo "tube - a Youtube-like (without censorship and features you don't need!) Video Sharing App"
+ @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[$$()% a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
+
+preflight: ## Run preflight checks to ensure you have the right build tools
+ @./preflight.sh
+
+deps: ## Install any dependencies required
+
+dev : DEBUG=1
+dev : server ## Build debug version of tube
+ @./tube
+
+server: generate ## Build the tube server
+ @$(GOCMD) build -tags "embed netgo static_build" -installsuffix netgo \
+ -ldflags "-w \
+ -X $(shell go list).Version=$(VERSION) \
+ -X $(shell go list).Commit=$(COMMIT)" \
.
-install: build
- @go install
+build: server ## Build the server
-docker-image:
- @docker build -t prologic/tube .
-docker-run:
- @docker run -p 8000:8000 -t prologic/tube .
+generate: ## Genereate any code required by the build
+ @if [ x"$(DEBUG)" = x"1" ]; then \
+ echo 'Running in debug mode...'; \
+ fi
-test: install
- @go test
+install: build ## Install tube to $DESTDIR
+ @install -D -m 755 tube $(DESTDIR)/tube
-release:
+ifeq ($(PUBLISH), 1)
+image: generate ## Build the Docker image
+ @docker build --build-arg VERSION="$(VERSION)" --build-arg COMMIT="$(COMMIT)" -t $(IMAGE):$(TAG) .
+ @docker push $(IMAGE):$(TAG)
+else
+image: generate
+ @docker build --build-arg VERSION="$(VERSION)" --build-arg COMMIT="$(COMMIT)" -t $(IMAGE):$(TAG) .
+endif
+
+release: generate ## Release a new version to Gitea
@./tools/release.sh
-clean:
+fmt: ## Format sources fiels
+ @$(GOCMD) fmt ./...
+
+test: ## Run test suite
+ @CGO_ENABLED=1 $(GOCMD) test -v -cover -race ./...
+
+coverage: ## Get test coverage report
+ @CGO_ENABLED=1 $(GOCMD) test -v -cover -race -cover -coverprofile=coverage.out ./...
+ @$(GOCMD) tool cover -html=coverage.out
+
+clean: ## Remove untracked files
+ @git clean -f -d -x
+
+clean-all: ## Remove untracked and Git ignores files
@git clean -f -d -X