Skip to content

Commit

Permalink
Help (#42)
Browse files Browse the repository at this point in the history
* 修改样式

* 修改样式
  • Loading branch information
guonaihong authored Apr 29, 2020
1 parent d513f9a commit 71dba2a
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 14 deletions.
1 change: 1 addition & 0 deletions clop_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,7 @@ func Test_API_subcommand(t *testing.T) {
err := p.Bind(&g)
assert.NoError(t, err)
assert.True(t, checkUsage(b))
os.Stdout.Write(b.Bytes())
return g
}(), git{Add: add{}}},
} {
Expand Down
91 changes: 77 additions & 14 deletions help_tmpl.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,22 @@ import (

func init() {
funcMap = template.FuncMap{
"addSpace": AddSpace,
"addSpace": addSpace,
"sub": sub,
}
}

var funcMap map[string]interface{}

func AddSpace(max, cur int) string {
func addSpace(max, cur int) string {
return strings.Repeat(" ", max-cur)
}

func sub(index int) int {
index--
return index
}

type showOption struct {
Opt string
Usage string
Expand Down Expand Up @@ -53,24 +59,81 @@ func (h *Help) output(w io.Writer) error {
return tmpl.Execute(w, *h)
}

var usageDefaultTmpl = `{{if gt (len .Version) 0}}
{{.Version}}{{end}}{{if gt (len .About) 0}}
{{.About}}{{end}}{{if or (gt (len .Flags) 0) (gt (len .Options) 0) (gt (len .Args) 0) (gt (len .Subcommand) 0)}}
var usageDefaultTmpl = `
{{- if gt (len .Version) 0}}
{{- .Version}}
{{end}}
{{- if gt (len .About) 0}}
{{- .About}}
{{end}}
{{- if or (gt (len .Flags) 0) (gt (len .Options) 0) (gt (len .Args) 0) (gt (len .Subcommand) 0)}}
Usage:
{{if gt (len .ProcessName) 0}}{{.ProcessName}} {{end}}{{if gt (len .Flags) 0}}[Flags] {{end}}{{if gt (len .Options) 0}}[Options] {{end}}{{range $_, $flag := .Args}}{{$flag.Opt}} {{end}}{{if gt (len .Subcommand) 0}}<Subcommand> {{end}}{{end}}{{$maxNameLen :=.MaxNameLen}}{{if gt (len .Flags) 0 }}
{{if gt (len .ProcessName) 0}}{{.ProcessName}} {{end}}
{{- if gt (len .Flags) 0}}[Flags] {{end}}
{{- if gt (len .Options) 0}}[Options] {{end}}
{{- range $_, $flag := .Args}}{{$flag.Opt}} {{end}}
{{- if gt (len .Subcommand) 0}}<Subcommand> {{end}}
{{- end}}
{{- $maxNameLen :=.MaxNameLen}}
{{- if gt (len .Flags) 0 }}
Flags:
{{range $_, $flag:= .Flags}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}}{{if gt (len $flag.Env) 0 }} [env: {{$flag.Env}}]{{end}}{{if gt (len $flag.Default) 0 }} [default: {{$flag.Default}}]{{end}}
{{end}}{{end}}{{if gt (len .Options) 0 }}
{{- $length := len .Flags}}
{{- $length = sub $length}}
{{range $index, $flag:= .Flags}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}}
{{- if gt (len $flag.Env) 0 }} [env: {{$flag.Env}}] {{- end}}
{{- if gt (len $flag.Default) 0 }} [default: {{$flag.Default}}] {{- end}}
{{- if ne $index $length}}
{{end}}
{{- end}}
{{- end}}
{{- if gt (len .Options) 0 }}
Options:
{{range $_, $flag:= .Options}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}} {{if gt (len $flag.Env) 0 }}[env: {{$flag.Env}}]{{end}}{{if gt (len $flag.Default) 0 }} [default: {{$flag.Default}}]{{end}}
{{end}}{{end}}{{if gt (len .Args) 0}}
{{- $length := len .Options}}
{{- $length = sub $length}}
{{range $index, $flag:= .Options}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}}
{{- if gt (len $flag.Env) 0 }}[env: {{$flag.Env}}]{{- end}}
{{- if gt (len $flag.Default) 0 }} [default: {{$flag.Default}}]{{- end}}
{{- if ne $index $length}}
{{end}}
{{- end}}
{{- end}}
{{- if gt (len .Args) 0}}
Args:
{{range $_, $flag:= .Args}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}} {{if gt (len $flag.Env) 0 }}[env: {{$flag.Env}}]{{end}}
{{end}}{{end}}{{if gt (len .Subcommand) 0 }}
{{- $length := len .Args}}
{{- $length = sub $length}}
{{range $index, $flag:= .Args}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}}
{{- if gt (len $flag.Env) 0 }}[env: {{$flag.Env}}]{{- end}}
{{- if ne $index $length}}
{{end}}
{{- end}}
{{- end}}
{{- if gt (len .Subcommand) 0 }}
Subcommand:
{{range $_, $flag:= .Subcommand}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}} {{if gt (len $flag.Env) 0 }}[env: {{$flag.Env}}]{{end}}
{{end}}{{end}}
{{- $length := len .Subcommand}}
{{- $length = sub $length}}
{{range $index, $flag:= .Subcommand}} {{addSpace $maxNameLen (len $flag.Opt)|printf "%s%s" $flag.Opt}} {{$flag.Usage}}
{{- if gt (len $flag.Env) 0 }}[env: {{$flag.Env}}]{{- end}}
{{- if ne $index $length}}
{{end}}
{{- end}}
{{- end}}
`

func newTemplate() *template.Template {
Expand Down

0 comments on commit 71dba2a

Please sign in to comment.