From 626d2f204084fd1d834f6ac95846252d610b85e6 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Mon, 23 Oct 2023 21:11:17 -0400 Subject: [PATCH] *: WIP adding man page Clean up Makefile for the tools to be pulled in as needed by jobs like building man pages (or linting, etc.) Building docs in the default step. But installing the man page is currently an exercise for the reader. Signed-off-by: Vincent Batts --- .github/workflows/validation.yml | 3 --- Makefile | 46 ++++++++++++++++---------------- gomtree.1.md | 28 +++++++++++++++++++ 3 files changed, 51 insertions(+), 26 deletions(-) create mode 100644 gomtree.1.md diff --git a/.github/workflows/validation.yml b/.github/workflows/validation.yml index e005484..9d81f5f 100644 --- a/.github/workflows/validation.yml +++ b/.github/workflows/validation.yml @@ -21,8 +21,5 @@ jobs: with: go-version: ${{ matrix.go }} - - name: Install tools - run: make install.tools - - name: Test run: make lint diff --git a/Makefile b/Makefile index ac31e47..3a2c26b 100644 --- a/Makefile +++ b/Makefile @@ -6,32 +6,22 @@ SOURCE_FILES := $(shell find . -type f -name "*.go") CLEAN_FILES := *~ TAGS := ARCHES := linux,386 linux,amd64 linux,arm linux,arm64 linux,mips64 linux,riscv64 openbsd,amd64 windows,amd64 windows,arm64 darwin,amd64 darwin,arm64 -GO_VER := go1.14 -default: build validation +default: build validation lint docs .PHONY: validation validation: .test .vet .cli.test .PHONY: validation.tags -validation.tags: .test.tags .vet.tags .cli.test .staticcheck +validation.tags: .test.tags .vet.tags .cli.test .PHONY: gocyclo gocyclo: .gocyclo CLEAN_FILES += .gocyclo - -.gocyclo: +.gocyclo: .gocyclo.tool gocyclo -avg -over 15 -ignore 'vendor/*' . && touch $@ -.PHONY: staticcheck -staticcheck: .staticcheck - -CLEAN_FILES += .staticcheck - -.staticcheck: - staticcheck . && touch $@ - .PHONY: test test: .test @@ -48,15 +38,13 @@ NO_VENDOR_DIR := $(shell find . -type f -name '*.go' ! -path './vendor*' ! -path lint: .lint CLEAN_FILES += .lint - -.lint: $(SOURCE_FILES) +.lint: .golangci-lint.tool $(SOURCE_FILES) set -e ; golangci-lint run && touch $@ .PHONY: vet vet: .vet .vet.tags CLEAN_FILES += .vet .vet.tags - .vet: $(SOURCE_FILES) go vet $(NO_VENDOR_DIR) && touch $@ @@ -67,30 +55,42 @@ CLEAN_FILES += .vet .vet.tags cli.test: .cli.test CLEAN_FILES += .cli.test .cli.test.tags - .cli.test: $(BUILD) $(wildcard ./test/cli/*.sh) @go run ./test/cli-test/main.go ./test/cli/*.sh && touch $@ .cli.test.tags: $(BUILD) $(wildcard ./test/cli/*.sh) @set -e ; for tag in $(TAGS) ; do go run -tags $$tag ./test/cli-test/main.go ./test/cli/*.sh ; done && touch $@ +docs: gomtree.1 + +CLEAN_FILES += gomtree.1 +%.1: %.1.md .go-md2man.tool + go-md2man -in $< -out $@ + .PHONY: build build: $(BUILD) $(BUILD): $(SOURCE_FILES) go build -ldflags="-X 'main.Version=$(shell git describe --always --dirty)'" -mod=vendor -o $(BUILD) $(BUILDPATH) -install.tools: - @go install github.com/fatih/color@latest ; \ - go install github.com/fzipp/gocyclo/cmd/gocyclo@latest ; \ - go install honnef.co/go/tools/cmd/staticcheck@latest ; \ - go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest +TOOLS += .gocyclo.tool +.gocyclo.tool: + go install github.com/fzipp/gocyclo/cmd/gocyclo@latest && touch $@ + +TOOLS += .go-md2man.tool +.go-md2man.tool: + go install github.com/cpuguy83/go-md2man@latest && touch $@ + +TOOLS += .golangci-lint.tool +.golangci-lint.tool: + go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest && touch $@ + +install.tools: $(TOOLS) ./bin: mkdir -p $@ CLEAN_FILES += bin - build.arches: ./bin @set -e ;\ for pair in $(ARCHES); do \ diff --git a/gomtree.1.md b/gomtree.1.md new file mode 100644 index 0000000..5964d78 --- /dev/null +++ b/gomtree.1.md @@ -0,0 +1,28 @@ +gomtree 1 "March 2016" gomtree "User Manual" +================================================== + +# NAME +gomtree - filesystem hierarcy validation tooling and format + +# SYNOPSIS +**gomtree** [**-in**=*/path/to/md/file*] [**-out**=*/path/to/output*] + +# DESCRIPTION +**go-md2man** converts standard markdown formatted documents into manpages. It is +written purely in Go so as to reduce dependencies on 3rd party libs. + +By default, the input is stdin and the output is stdout. + +# EXAMPLES +Convert the markdown file *go-md2man.1.md* into a manpage: +``` +go-md2man < go-md2man.1.md > go-md2man.1 +``` + +Same, but using command line arguments instead of shell redirection: +``` +go-md2man -in=go-md2man.1.md -out=go-md2man.1 +``` + +# HISTORY +March 2016, Originally authored by Vincent Batts (vbatts@hashbangbash.com).