goveal/Makefile
Peter Kurfer a4c0016baa
feat(PoC): PoC complete
- HTTP server
- Rendering markdown content into a HTML template
- theme and some other useful options configurable via config file or flag
- release pipeline prepared
- reveal.js statically included into binary
- config hot reloading
2019-04-19 23:56:39 +02:00

119 lines
No EOL
3.2 KiB
Makefile

VERSION = $(shell git describe --dirty --tags --always)
REPO = github.com/baez90/go-reveal-slides
BUILD_PATH = $(REPO)/cmd/goveal
PKGS = $(shell go list ./... | grep -v /vendor/)
TEST_PKGS = $(shell find . -type f -name "*_test.go" -printf '%h\n' | sort -u)
GOARGS = GOOS=linux GOARCH=amd64
GO_BUILD_ARGS = -ldflags="-w -s"
BINARY_NAME = goveal
DIR = $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
DEBUG_PORT = 2345
REVEALJS_VERSION = 3.8.0
GORELEASER_VERSION = 0.106.0
.PHONY: all clean clean-all clean-vendor rebuild format revive test deps compile run debug watch watch-test cloc docs serve-docs serve-godoc ensure-revive ensure-reflex ensure-delve ensure-godoc ensure-packr2 ensure-goreleaser
export CGO_ENABLED:=0
all: format compile
clean-all: clean clean-vendor
rebuild: clean format compile
format:
@go fmt $(PKGS)
revive: ensure-revive
@revive --config $(DIR)assets/lint/config.toml -exclude $(DIR)vendor/... -formatter friendly $(DIR)...
clean: ensure-packr2
@rm -f debug $(BINARY_NAME)
@rm -rf dist
@packr2 clean
clean-vendor:
rm -rf vendor/
test:
@go test -coverprofile=./cov-raw.out -v $(TEST_PKGS)
@cat ./cov-raw.out | grep -v "generated" > ./cov.out
cli-cover-report:
@go tool cover -func=cov.out
html-cover-report:
@go tool cover -html=cov.out -o .coverage.html
deps:
@go build -v ./...
compile: deps ensure-packr2
@$(GOARGS) packr2 build $(GO_BUILD_ARGS) -o $(DIR)/$(BINARY_NAME) $(BUILD_PATH)
run:
@go run $(BUILD_PATH)
debug: ensure-delve
@dlv debug \
--headless \
--listen=127.10.10.2:$(DEBUG_PORT) \
--api-version=2 $(BUILD_PATH) \
--build-flags="-tags debug" \
-- serve --config ./examples/goveal.yaml $(DIR)/examples/slides.md
download-reveal:
@mkdir -p $(DIR)/assets/reveal
@curl -sL https://github.com/hakimel/reveal.js/archive/$(REVEALJS_VERSION).tar.gz | tar -xvz --strip-components=1 -C $(DIR)/assets/reveal --wildcards "*.js" --wildcards "*.css" --exclude "test" --exclude "gruntfile.js"
watch: ensure-reflex
@reflex -r '\.go$$' -s -- sh -c 'make debug'
watch-test: ensure-reflex
@reflex -r '_test\.go$$' -s -- sh -c 'make test'
cloc:
@cloc --vcs=git --exclude-dir=.idea,.vscode,.theia,public,docs, .
serve-godoc: ensure-godoc
@godoc -http=:6060
serve-docs: ensure-reflex docs
@reflex -r '\.md$$' -s -- sh -c 'mdbook serve -d $(DIR)/public -n 127.0.0.1 $(DIR)/docs'
docs:
@mdbook build -d $(DIR)/public $(DIR)/docs`
test-release: ensure-goreleaser ensure-packr2
@goreleaser --snapshot --skip-publish --rm-dist
ensure-revive:
ifeq (, $(shell which revive))
$(shell go get -u github.com/mgechev/revive)
endif
ensure-delve:
ifeq (, $(shell which dlv))
$(shell go get -u github.com/go-delve/delve/cmd/dlv)
endif
ensure-reflex:
ifeq (, $(shell which reflex))
$(shell go get -u github.com/cespare/reflex)
endif
ensure-godoc:
ifeq (, $(shell which godoc))
$(shell go get -u golang.org/x/tools/cmd/godoc)
endif
ensure-packr2:
ifeq (, $(shell which packr2))
$(shell go get -u github.com/gobuffalo/packr/v2/packr2)
endif
ensure-goreleaser:
ifeq (, $(shell which goreleaser))
$(shell curl -sL https://github.com/goreleaser/goreleaser/releases/download/v$(GORELEASER_VERSION)/goreleaser_Linux_x86_64.tar.gz | tar -xvz --exclude "*.md" -C $$GOPATH/bin)
endif