docs(man): implement manpage

- Implement `make man` to generate a manpage

- Change verb tense in `make` help text
This commit is contained in:
Chris Lane
2020-03-24 20:19:33 -04:00
parent 521f83377c
commit 749d5c1182
5 changed files with 434 additions and 42 deletions

View File

@ -11,7 +11,9 @@ GO := go
GREP := grep
GZIP := gzip --best
LINT := revive
MAN := man
MKDIR := mkdir -p
PANDOC := pandoc
RM := rm
SCC := scc
SED := sed
@ -32,16 +34,16 @@ releases := \
$(dist_dir)/cheat-linux-arm7 \
$(dist_dir)/cheat-windows-amd64.exe
## build: builds an executable for your architecture
## build: build an executable for your architecture
.PHONY: build
build: $(dist_dir) clean vendor generate
build: $(dist_dir) clean vendor generate man
$(GO) build $(BUILD_FLAGS) -o $(dist_dir)/cheat $(cmd_dir)
## build-release: builds release executables
## build-release: build release executables
.PHONY: build-release
build-release: $(releases)
## ci: builds a "release" executable for the current architecture (used in ci)
## ci: build a "release" executable for the current architecture (used in ci)
.PHONY: ci
ci: | setup prepare build
@ -83,75 +85,81 @@ $(dist_dir):
generate:
$(GO) generate $(cmd_dir)
## install: builds and installs cheat on your PATH
## install: build and install cheat on your PATH
.PHONY: install
install: build
$(GO) install $(BUILD_FLAGS) $(GOBIN) $(cmd_dir)
## clean: removes compiled executables
## clean: remove compiled executables
.PHONY: clean
clean: $(dist_dir)
$(RM) -f $(dist_dir)/*
## distclean: removes the tags file
## distclean: remove the tags file
.PHONY: distclean
distclean:
$(RM) -f tags
## setup: installs revive (linter) and scc (sloc tool)
## setup: install revive (linter) and scc (sloc tool)
.PHONY: setup
setup:
GO111MODULE=off $(GO) get -u github.com/boyter/scc github.com/mgechev/revive
## sloc: counts "semantic lines of code"
## sloc: count "semantic lines of code"
.PHONY: sloc
sloc:
$(SCC) --exclude-dir=vendor
## tags: builds a tags file
## tags: build a tags file
.PHONY: tags
tags:
$(CTAGS) -R --exclude=vendor --languages=go
## vendor: downloads, tidies, and verifies dependencies
## man: build a man page
# NB: pandoc may not be installed, so we're ignoring this error on failure
.PHONY: man
man:
-$(PANDOC) -s -t man doc/cheat.1.md -o doc/cheat.1
## vendor: download, tidy, and verify dependencies
.PHONY: vendor
vendor:
$(GO) mod vendor && $(GO) mod tidy && $(GO) mod verify
## fmt: runs go fmt
## fmt: run go fmt
.PHONY: fmt
fmt:
$(GO) fmt ./...
## lint: lints go source files
## lint: lint go source files
.PHONY: lint
lint: vendor
$(LINT) -exclude vendor/... ./...
## vet: vets go source files
## vet: vet go source files
.PHONY: vet
vet:
$(GO) vet ./...
## test: runs unit-tests
## test: run unit-tests
.PHONY: test
test:
$(GO) test ./...
## coverage: generates a test coverage report
## coverage: generate a test coverage report
.PHONY: coverage
coverage:
$(GO) test ./... -coverprofile=$(TMPDIR)/cheat-coverage.out && \
$(GO) tool cover -html=$(TMPDIR)/cheat-coverage.out
## check: formats, lints, vets, vendors, and run unit-tests
## check: format, lint, vet, vendor, and run unit-tests
.PHONY: check
check: | vendor fmt lint vet test
.PHONY: prepare
prepare: | $(dist_dir) clean generate vendor fmt lint vet test
## help: displays this help text
## help: display this help text
.PHONY: help
help:
@$(CAT) $(makefile) | \