feat: added custom args to be able to call the tools in more flexablie way.
This commit is contained in:
parent
cc0131c812
commit
561b23ffc8
2 changed files with 20 additions and 21 deletions
|
@ -9,21 +9,21 @@ import (
|
|||
"time"
|
||||
)
|
||||
|
||||
|
||||
type Flags struct {
|
||||
*flag.FlagSet
|
||||
tool *Tool
|
||||
args []string
|
||||
tool *Tool
|
||||
args []string
|
||||
parsedArgs []string
|
||||
envNameMap map[string] []string
|
||||
envMap map[string]string
|
||||
customArgs []any
|
||||
envNameMap map[string][]string
|
||||
envMap map[string]string
|
||||
}
|
||||
|
||||
type ToolMap map[string] *Tool
|
||||
type ToolMap map[string]*Tool
|
||||
|
||||
func (flags *Flags) wasPassed(name string) bool {
|
||||
found := false
|
||||
flags.Visit(func(f *flag.Flag){
|
||||
flags.Visit(func(f *flag.Flag) {
|
||||
if f.Name == name {
|
||||
found = true
|
||||
}
|
||||
|
@ -150,4 +150,3 @@ func (flags *Flags) Args() []string {
|
|||
func (flags *Flags) Tool() *Tool {
|
||||
return flags.tool
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
package mtool
|
||||
|
||||
import (
|
||||
"text/tabwriter"
|
||||
"strings"
|
||||
"flag"
|
||||
"sort"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"sort"
|
||||
"strings"
|
||||
"text/tabwriter"
|
||||
)
|
||||
|
||||
type Tool struct {
|
||||
|
@ -107,7 +107,7 @@ func (t *Tool) PrintSubs(out io.Writer) {
|
|||
}
|
||||
}
|
||||
|
||||
func (t *Tool) Run(args []string) {
|
||||
func (t *Tool) Run(args []string, customArgs ...any) {
|
||||
var(
|
||||
usageTool *Tool
|
||||
)
|
||||
|
@ -120,6 +120,7 @@ func (t *Tool) Run(args []string) {
|
|||
FlagSet : flagSet,
|
||||
envMap: make(map[string]string),
|
||||
envNameMap: make(map[string] []string),
|
||||
customArgs: customArgs,
|
||||
}
|
||||
out := flags.Output()
|
||||
flags.Usage = func() {
|
||||
|
@ -150,7 +151,7 @@ func (t *Tool) Run(args []string) {
|
|||
usageTool.FullName(), FormatInCode(t.desc, true),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Usage
|
||||
fmt.Fprintf(
|
||||
|
@ -160,7 +161,7 @@ func (t *Tool) Run(args []string) {
|
|||
if hasOptions {
|
||||
fmt.Fprintf(out, " [options]")
|
||||
}
|
||||
|
||||
|
||||
if usageTool.usage != "" {
|
||||
fmt.Fprintf(
|
||||
out,
|
||||
|
@ -178,16 +179,16 @@ func (t *Tool) Run(args []string) {
|
|||
FormatInCode(usageTool.ldesc, true),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
// Options
|
||||
if hasOptions {
|
||||
fmt.Fprintln(out, "\nOptions:")
|
||||
fmt.Fprintln(out, " -- option terminator")
|
||||
flags.PrintDefaults()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
flags.args = args
|
||||
|
||||
// If the tool has its own handler run it.
|
||||
|
@ -234,12 +235,12 @@ func (t *Tool) Run(args []string) {
|
|||
fmt.Fprint(out, "\nCommands:\n")
|
||||
t.PrintSubs(out)
|
||||
}
|
||||
|
||||
|
||||
os.Exit(1)
|
||||
}
|
||||
toolName := args[0]
|
||||
args = args[1:]
|
||||
|
||||
|
||||
if _, ok := t.subs[toolName] ; !ok {
|
||||
fmt.Fprintf(
|
||||
out,
|
||||
|
@ -253,7 +254,7 @@ func (t *Tool) Run(args []string) {
|
|||
|
||||
sub := t.subs[toolName]
|
||||
usageTool = sub
|
||||
sub.Run(args)
|
||||
sub.Run(args, customArgs...)
|
||||
}
|
||||
|
||||
// Returns the built-in
|
||||
|
@ -278,4 +279,3 @@ func FormatInCode(
|
|||
}
|
||||
return desc
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue