/usr/share/gocode/src/github.com/svent/go-flags/man.go is in golang-github-svent-go-flags-dev 1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | package flags
import (
"fmt"
"io"
"strings"
"time"
)
func (x *Parser) formatForMan(wr io.Writer, s string) {
for {
idx := strings.IndexRune(s, '`')
if idx < 0 {
fmt.Fprintf(wr, "%s", s)
break
}
fmt.Fprintf(wr, "%s", s[:idx])
s = s[idx+1:]
idx = strings.IndexRune(s, '\'')
if idx < 0 {
fmt.Fprintf(wr, "%s", s)
break
}
fmt.Fprintf(wr, "\\fB%s\\fP", s[:idx])
s = s[idx+1:]
}
}
func (x *Parser) writeManPageOptions(wr io.Writer, groups ...*Group) {
for _, group := range groups {
for _, opt := range group.Options {
fmt.Fprintln(wr, ".TP")
fmt.Fprintf(wr, "\\fB")
if opt.ShortName != 0 {
fmt.Fprintf(wr, "-%c", opt.ShortName)
}
if len(opt.LongName) != 0 {
if opt.ShortName != 0 {
fmt.Fprintf(wr, ", ")
}
fmt.Fprintf(wr, "--%s", opt.LongName)
}
fmt.Fprintln(wr, "\\fP")
x.formatForMan(wr, opt.Description)
fmt.Fprintln(wr, "")
}
}
}
func (x *Parser) writeManPageCommand(wr io.Writer, command string, grp *Group) {
fmt.Fprintf(wr, ".SS %s\n", command)
fmt.Fprintln(wr, grp.Name)
if len(grp.LongDescription) > 0 {
fmt.Fprintln(wr, "")
cmdstart := fmt.Sprintf("The %s command", command)
if strings.HasPrefix(grp.LongDescription, cmdstart) {
fmt.Fprintf(wr, "The \\fI%s\\fP command", command)
x.formatForMan(wr, grp.LongDescription[len(cmdstart):])
fmt.Fprintln(wr, "")
} else {
x.formatForMan(wr, grp.LongDescription)
fmt.Fprintln(wr, "")
}
}
x.writeManPageOptions(wr, grp)
for k, v := range grp.Commander.Commands {
x.writeManPageCommand(wr, command+" "+k, v)
}
}
// WriteManPage writes a basic man page in groff format to the specified
// writer.
func (x *Parser) WriteManPage(wr io.Writer, description string) {
t := time.Now()
fmt.Fprintf(wr, ".TH %s 1 \"%s\"\n", x.ApplicationName, t.Format("2 January 2006"))
fmt.Fprintln(wr, ".SH NAME")
fmt.Fprintf(wr, "%s \\- %s\n", x.ApplicationName, x.Description)
fmt.Fprintln(wr, ".SH SYNOPSIS")
fmt.Fprintf(wr, "\\fB%s\\fP %s\n", x.ApplicationName, x.Usage)
fmt.Fprintln(wr, ".SH DESCRIPTION")
x.formatForMan(wr, description)
fmt.Fprintln(wr, "")
fmt.Fprintln(wr, ".SH OPTIONS")
x.writeManPageOptions(wr, x.Groups...)
if len(x.Commander.Commands) > 0 {
fmt.Fprintln(wr, ".SH COMMANDS")
for k, v := range x.Commander.Commands {
x.writeManPageCommand(wr, k, v)
}
}
}
|