81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
|
package flagset
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// Mostly copied from https://github.com/google/pprof/blob/master/internal/driver/flags.go
|
||
|
type Set struct {
|
||
|
Argz []string
|
||
|
s flag.FlagSet
|
||
|
usage []string
|
||
|
}
|
||
|
|
||
|
// Bool implements the plugin.FlagSet interface.
|
||
|
func (p *Set) Bool(o string, d bool, c string) *bool {
|
||
|
return p.s.Bool(o, d, c)
|
||
|
}
|
||
|
|
||
|
// Int implements the plugin.FlagSet interface.
|
||
|
func (p *Set) Int(o string, d int, c string) *int {
|
||
|
return p.s.Int(o, d, c)
|
||
|
}
|
||
|
|
||
|
// Float64 implements the plugin.FlagSet interface.
|
||
|
func (p *Set) Float64(o string, d float64, c string) *float64 {
|
||
|
return p.s.Float64(o, d, c)
|
||
|
}
|
||
|
|
||
|
// String implements the plugin.FlagSet interface.
|
||
|
func (p *Set) String(o, d, c string) *string {
|
||
|
return p.s.String(o, d, c)
|
||
|
}
|
||
|
|
||
|
// BoolVar implements the plugin.FlagSet interface.
|
||
|
func (p *Set) BoolVar(b *bool, o string, d bool, c string) {
|
||
|
p.s.BoolVar(b, o, d, c)
|
||
|
}
|
||
|
|
||
|
// IntVar implements the plugin.FlagSet interface.
|
||
|
func (p *Set) IntVar(i *int, o string, d int, c string) {
|
||
|
p.s.IntVar(i, o, d, c)
|
||
|
}
|
||
|
|
||
|
// Float64Var implements the plugin.FlagSet interface.
|
||
|
// the value of the flag.
|
||
|
func (p *Set) Float64Var(f *float64, o string, d float64, c string) {
|
||
|
p.s.Float64Var(f, o, d, c)
|
||
|
}
|
||
|
|
||
|
// StringVar implements the plugin.FlagSet interface.
|
||
|
func (p *Set) StringVar(s *string, o, d, c string) {
|
||
|
p.s.StringVar(s, o, d, c)
|
||
|
}
|
||
|
|
||
|
// StringList implements the plugin.FlagSet interface.
|
||
|
func (p *Set) StringList(o, d, c string) *[]*string {
|
||
|
return &[]*string{p.s.String(o, d, c)}
|
||
|
}
|
||
|
|
||
|
// AddExtraUsage implements the plugin.FlagSet interface.
|
||
|
func (p *Set) AddExtraUsage(eu string) {
|
||
|
p.usage = append(p.usage, eu)
|
||
|
}
|
||
|
|
||
|
// ExtraUsage implements the plugin.FlagSet interface.
|
||
|
func (p *Set) ExtraUsage() string {
|
||
|
return strings.Join(p.usage, "\n")
|
||
|
}
|
||
|
|
||
|
// Parse implements the plugin.FlagSet interface.
|
||
|
func (p *Set) Parse(usage func()) []string {
|
||
|
p.s.Usage = usage
|
||
|
p.s.Parse(p.Argz)
|
||
|
Argz := p.s.Args()
|
||
|
if len(Argz) == 0 {
|
||
|
usage()
|
||
|
}
|
||
|
return Argz
|
||
|
}
|