github.com/diamondburned/arikawa/v2@v2.1.0/bot/extras/arguments/flag.go (about) 1 package arguments 2 3 import ( 4 "bytes" 5 "flag" 6 "io/ioutil" 7 ) 8 9 var FlagName = "command" 10 11 type FlagSet struct { 12 *flag.FlagSet 13 } 14 15 func NewFlagSet() *FlagSet { 16 fs := flag.NewFlagSet(FlagName, flag.ContinueOnError) 17 fs.SetOutput(ioutil.Discard) 18 19 return &FlagSet{fs} 20 } 21 22 func (fs *FlagSet) Usage() string { 23 var buf bytes.Buffer 24 25 fs.FlagSet.SetOutput(&buf) 26 fs.FlagSet.Usage() 27 fs.FlagSet.SetOutput(ioutil.Discard) 28 29 return buf.String() 30 } 31 32 type Flag []string 33 34 func (f *Flag) ParseContent(arguments []string) error { 35 *f = arguments 36 return nil 37 } 38 39 func (f Flag) Usage() string { 40 return "[flags] arguments" 41 } 42 43 func (f Flag) Args() []string { 44 return f 45 } 46 47 func (f Flag) With(fs *flag.FlagSet) error { 48 return fs.Parse(f) 49 }