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 }