21790114b15be05fca97853a7e41c7763595bdb1

Author
Christian Muehlhaeuser <muesli@gmail.com>
Committer
Toby Padilla <tobypadilla@gmail.com>
Date

Message

Generate man page when built with 'mango' build-tag

When building with the 'mango' build-tag (go build -tags mango) enabled,
we will simply generate and print a man-page on startup and immediately
exit again.

Diff

 1diff --git a/cmd/soft/man.go b/cmd/soft/man.go
 2new file mode 100644
 3index 0000000000000000000000000000000000000000..1ddcd306a01d149f0e65dfcb559b22521c8dcfc1
 4--- /dev/null
 5+++ b/cmd/soft/man.go
 6@@ -0,0 +1,25 @@
 7+//go:build mango
 8+// +build mango
 9+
10+package main
11+
12+import (
13+	"flag"
14+	"fmt"
15+	"os"
16+
17+	"github.com/muesli/mango"
18+	"github.com/muesli/mango/mflag"
19+	"github.com/muesli/roff"
20+)
21+
22+func init() {
23+	manPage := mango.NewManPage(1, "soft", "A self-hostable Git server for the command line").
24+		WithLongDescription("Soft Serve is a self-hostable Git server for the command line.").
25+		WithSection("Copyright", "(C) 2021-2022 Charmbracelet, Inc.\n"+
26+			"Released under MIT license.")
27+
28+	flag.VisitAll(mflag.FlagVisitor(manPage))
29+	fmt.Println(manPage.Build(roff.NewDocument()))
30+	os.Exit(0)
31+}
32diff --git a/go.mod b/go.mod
33index fad69374307dd3260c3b4900262899e57d855e71..57d0ed3ea06a7b1ff40dfe4ac823ac429adf151f 100644
34--- a/go.mod
35+++ b/go.mod
36@@ -22,6 +22,11 @@ require (
37 	gopkg.in/yaml.v2 v2.4.0
38 )
39 
40+require (
41+	github.com/muesli/mango v0.1.0
42+	github.com/muesli/roff v0.1.0
43+)
44+
45 require (
46 	github.com/Microsoft/go-winio v0.5.1 // indirect
47 	github.com/ProtonMail/go-crypto v0.0.0-20220113124808-70ae35bab23f // indirect
48diff --git a/go.sum b/go.sum
49index e81c7e4c75c1e2f0515d2541cc48d6429d2f9917..6c43ed67fbe3f4a813e4f1570d183b2a52fe8200 100644
50--- a/go.sum
51+++ b/go.sum
52@@ -104,9 +104,13 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk
53 github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
54 github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 h1:kMlmsLSbjkikxQJ1IPwaM+7LJ9ltFu/fi8CRzvSnQmA=
55 github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
56+github.com/muesli/mango v0.1.0 h1:DZQK45d2gGbql1arsYA4vfg4d7I9Hfx5rX/GCmzsAvI=
57+github.com/muesli/mango v0.1.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=
58 github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ=
59 github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
60 github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
61+github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8=
62+github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig=
63 github.com/muesli/termenv v0.9.0/go.mod h1:R/LzAKf+suGs4IsO95y7+7DpFHO0KABgnZqtlyx2mBw=
64 github.com/muesli/termenv v0.11.0 h1:fwNUbu2mfWlgicwG7qYzs06aOI8Z/zKPAv8J4uKbT+o=
65 github.com/muesli/termenv v0.11.0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs=