Release v0.3.0

This commit is contained in:
Evan Fiordeliso 2023-11-16 23:02:14 -05:00
commit 160b3321ef
3 changed files with 19 additions and 4 deletions

View File

@ -9,6 +9,7 @@ import (
type Command struct {
Name string
version string
ShortDescription string
LongDescription string
Aliases []string
@ -20,8 +21,8 @@ type Command struct {
isRoot bool
}
func NewRoot(name string, options ...Option) *Command {
cmd := &Command{Name: name, isRoot: true}
func NewRoot(name string, version string, options ...Option) *Command {
cmd := &Command{Name: name, version: version, isRoot: true}
cmd.ApplyOptions(options...)
return cmd
}
@ -91,6 +92,12 @@ func (c *Command) Execute(args []string) {
os.Exit(1)
}
versionOpt, ok := opt.Globals().GetBool("version")
if ok && versionOpt.Value() {
c.ShowVersion()
return
}
helpOpt, ok := opt.Globals().GetBool("help")
if ok && helpOpt.Value() {
c.ShowHelp()
@ -104,3 +111,8 @@ func (c *Command) Execute(args []string) {
c.ShowHelp()
}
func (c *Command) ShowVersion() {
rootName := c.Root().Name
fmt.Printf("%s %s\n", rootName, c.version)
}

View File

@ -2,6 +2,7 @@ package cmd
import (
"fmt"
"strings"
"go.fifitido.net/cmd/opt"
)
@ -43,8 +44,10 @@ func (c *Command) ShowHelp() {
fmt.Println("Available subcommands:")
}
paddedWidth := c.Subcommands.MaxWidth()
for _, s := range c.Subcommands {
fmt.Println(" " + s.Name + " " + s.ShortDescription)
spaceSize := 2 + paddedWidth - len(s.Name)
fmt.Println(" " + s.Name + strings.Repeat(" ", spaceSize) + s.ShortDescription)
}
}

2
set.go
View File

@ -25,7 +25,7 @@ func (s Set) Get(name string) (*Command, bool) {
return nil, false
}
func (s Set) MaxNameWidth() int {
func (s Set) MaxWidth() int {
max := 0
for _, f := range s {
if w := len(f.Name); w > max {