Added long descriptions for mtool.
This commit is contained in:
parent
6f7bea24d0
commit
f877427ca8
2 changed files with 59 additions and 26 deletions
|
@ -15,15 +15,14 @@ var (
|
|||
args := flags.Parse()
|
||||
fmt.Println(args)
|
||||
}).Desc(
|
||||
"print string to standard output string",
|
||||
"print string array to standard output",
|
||||
).Usage(
|
||||
"[str1 str2 ... strN]",
|
||||
),
|
||||
mtool.T("sum").Func(func(flags *mtool.Flags) {
|
||||
flags.Parse()
|
||||
args := flags.Args()
|
||||
one, _ := strconv.Atoi(args[1])
|
||||
two, _ := strconv.Atoi(args[2])
|
||||
args := flags.Parse()
|
||||
one, _ := strconv.Atoi(args[0])
|
||||
two, _ := strconv.Atoi(args[1])
|
||||
fmt.Println(one + two)
|
||||
}).Desc(
|
||||
"add one value to another",
|
||||
|
@ -34,18 +33,21 @@ var (
|
|||
mtool.T("first").Func(func(flags *mtool.Flags) {
|
||||
fmt.Println("called the first", flags.Parse())
|
||||
}).Desc(
|
||||
"description",
|
||||
).Usage(
|
||||
"[nothing here]",
|
||||
"first sub tool",
|
||||
),
|
||||
mtool.T("second").Func(func(flags *mtool.Flags){
|
||||
fmt.Println("called the second", flags.Parse())
|
||||
}).Desc(
|
||||
"description",
|
||||
).Usage(
|
||||
"[nothing here]",
|
||||
"second sub tool",
|
||||
),
|
||||
),
|
||||
).Desc(
|
||||
"the tool to demonstrate how subtools work",
|
||||
),
|
||||
).Desc(
|
||||
"the testing program to show how to use the lib",
|
||||
).Ldesc(
|
||||
"this is the long description where you "+
|
||||
"can put anything you want about the program",
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ func (fn HandlerFunc) Handle(flags *Flags) {
|
|||
type Tool struct {
|
||||
name string
|
||||
handler Handler
|
||||
desc, usage string
|
||||
desc, ldesc, usage string
|
||||
subs ToolMap
|
||||
parent *Tool
|
||||
}
|
||||
|
@ -58,6 +58,11 @@ func (t *Tool) Desc(d string) *Tool {
|
|||
return t
|
||||
}
|
||||
|
||||
func (t *Tool) Ldesc(d string) *Tool {
|
||||
t.ldesc = d
|
||||
return t
|
||||
}
|
||||
|
||||
func (t *Tool) Usage(u string) *Tool {
|
||||
t.usage = u
|
||||
return t
|
||||
|
@ -92,6 +97,10 @@ func (t *Tool) FullName() string {
|
|||
return ret
|
||||
}
|
||||
|
||||
func (t *Tool) IsRoot() bool {
|
||||
return t.parent == nil
|
||||
}
|
||||
|
||||
func (t *Tool) ProgName() string {
|
||||
for t.parent != nil {
|
||||
t = t.parent
|
||||
|
@ -114,15 +123,21 @@ func (t *Tool) Run(args []string) {
|
|||
out := flags.Output()
|
||||
flags.Usage = func() {
|
||||
n := 0
|
||||
// We can visit the flags since the
|
||||
// function will be called after
|
||||
// parsing.
|
||||
flags.VisitAll(func(f *flag.Flag){
|
||||
n++
|
||||
})
|
||||
|
||||
hasOptions := n != 0
|
||||
|
||||
// Name
|
||||
if usageTool.desc != "" {
|
||||
fmt.Fprintf(
|
||||
out, "Name:\n %s - %s\n\n",
|
||||
usageTool.FullName(), t.desc,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
// Usage
|
||||
fmt.Fprintf(
|
||||
out, "Usage:\n %s",
|
||||
usageTool.FullName(),
|
||||
|
@ -141,12 +156,16 @@ func (t *Tool) Run(args []string) {
|
|||
|
||||
fmt.Fprintln(out, "")
|
||||
|
||||
if usageTool.ldesc != "" {
|
||||
fmt.Fprintf(out, "Description:\n %s", usageTool.ldesc)
|
||||
}
|
||||
|
||||
// Options
|
||||
if hasOptions {
|
||||
fmt.Fprintln(out, "\nOptions:")
|
||||
flags.PrintDefaults()
|
||||
}
|
||||
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
flags.args = args
|
||||
|
@ -169,14 +188,26 @@ func (t *Tool) Run(args []string) {
|
|||
}
|
||||
sort.Strings(keys)
|
||||
|
||||
if t.desc != "" {
|
||||
fmt.Fprintf(
|
||||
out, "Name:\n %s - %s\n\n",
|
||||
t.FullName(), t.desc,
|
||||
)
|
||||
}
|
||||
|
||||
fmt.Fprintf(out, "Usage:\n"+
|
||||
" %s <command> [options] [arguments]\n\n" +
|
||||
"Commands:\n", t.FullName())
|
||||
for i, k := range keys {
|
||||
tool := t.subs[k]
|
||||
fmt.Fprintf(out, " %s\t%s\n", k, tool.desc)
|
||||
if i != len(keys) - 1 {
|
||||
fmt.Fprintln(out, "")
|
||||
" %s <command>\n", t.FullName())
|
||||
|
||||
if t.ldesc != "" {
|
||||
fmt.Fprintf(out, "\nDescription:\n %s\n", t.ldesc)
|
||||
}
|
||||
|
||||
if len(keys) > 0 {
|
||||
fmt.Fprint(out, "\nCommands:\n")
|
||||
for _, k := range keys {
|
||||
|
||||
tool := t.subs[k]
|
||||
fmt.Fprintf(out, " %s\t%s\n", k, tool.desc)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue