Documentation
¶
Overview ¶
Package flagargs is a helper for stdlib flag (and github.com/spf13/pflag) to handle known positional arguments
Example:
import (
"containrrr.dev/flagargs"
"flag"
"fmt"
)
var parser flagargs.Parser
var name string
func init() {
flag.StringVar(&name, "name", "", "the name of the thing")
parser = flagargs.NewParser("name")
}
func main() {
flag.Parse()
extra, err := parser.ParseAndUpdateFlags(flag.CommandLine, flag.CommandLine.Args())
if err != nil {
_ = fmt.Errorf("error setting known arg flag: %v", err)
return
}
fmt.Printf("name was set to %q\n", name)
fmt.Printf("got %v extra argument(s): %v\n", len(extra), extra)
}
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LocateDoubleDash ¶
LocateDoubleDash finds the first instance of "--" if present in the passed args
Types ¶
type FlagSetWithDash ¶
FlagSetWithDash is the interface used for locating the split between known- and extra args
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser handles passed non-flag arguments and updates flags with positional args
func (*Parser) ParseAndUpdateFlags ¶
ParseAndUpdateFlags splits the args between known- and extra args the known args are set on flags using the corresponding key passed in NewParser
Example (PFlag) ¶
package main
import (
"containrrr.dev/flagargs"
"fmt"
"github.com/spf13/pflag"
)
func main() {
flags := pflag.NewFlagSet("example", pflag.ExitOnError)
flags.String("name", "", "the name of the thing")
parser := flagargs.NewParser("name")
// Normally you would get the args from os.Args:
// _ = flags.Parse(os.Args)
// In this example we'll just use a hard coded slice:
_ = flags.Parse([]string{"arg1", "arg2", "arg3"})
extra, err := parser.ParseAndUpdateFlags(flags, flags.Args())
if err != nil {
_ = fmt.Errorf("error setting known arg flag: %v", err)
return
}
name, _ := flags.GetString("name")
fmt.Printf("name was set to %q, ", name)
fmt.Printf("got %v extra argument(s): %v\n", len(extra), extra)
}
Output: name was set to "arg1", got 2 extra argument(s): [arg2 arg3]
Example (StdFlag) ¶
package main
import (
"containrrr.dev/flagargs"
"flag"
"fmt"
)
var parser *flagargs.Parser
var name string
func init() {
flag.StringVar(&name, "name", "", "the name of the thing")
parser = flagargs.NewParser("name")
}
func main() {
flag.Parse()
extra, err := parser.ParseAndUpdateFlags(flag.CommandLine, flag.CommandLine.Args())
if err != nil {
_ = fmt.Errorf("error setting known arg flag: %v", err)
return
}
fmt.Printf("name was set to %q\n", name)
fmt.Printf("got %v extra argument(s): %v\n", len(extra), extra)
}
Click to show internal directories.
Click to hide internal directories.