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  }