From d103ed6ca97ca5a2669f6cf5fe4b3d2a9c945f26 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Wed, 17 May 2017 16:51:25 -0400 Subject: Upgrading server dependancies (#6431) --- .../go-sockaddr/cmd/sockaddr/command/rfc_list.go | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/command/rfc_list.go (limited to 'vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/command/rfc_list.go') diff --git a/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/command/rfc_list.go b/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/command/rfc_list.go new file mode 100644 index 000000000..11c1ac365 --- /dev/null +++ b/vendor/github.com/hashicorp/go-sockaddr/cmd/sockaddr/command/rfc_list.go @@ -0,0 +1,94 @@ +package command + +import ( + "flag" + "fmt" + "sort" + + "github.com/hashicorp/errwrap" + sockaddr "github.com/hashicorp/go-sockaddr" + "github.com/mitchellh/cli" +) + +type RFCListCommand struct { + Ui cli.Ui + + // flags is a list of options belonging to this command + flags *flag.FlagSet +} + +// Description is the long-form command help. +func (c *RFCListCommand) Description() string { + return `Lists all known RFCs.` +} + +// Help returns the full help output expected by `sockaddr -h cmd` +func (c *RFCListCommand) Help() string { + return MakeHelp(c) +} + +// InitOpts is responsible for setup of this command's configuration via the +// command line. InitOpts() does not parse the arguments (see parseOpts()). +func (c *RFCListCommand) InitOpts() { + c.flags = flag.NewFlagSet("list", flag.ContinueOnError) + c.flags.Usage = func() { c.Ui.Output(c.Help()) } +} + +type rfcNums []uint + +func (s rfcNums) Len() int { return len(s) } +func (s rfcNums) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +func (s rfcNums) Less(i, j int) bool { return s[i] < s[j] } + +// Run executes this command. +func (c *RFCListCommand) Run(args []string) int { + if len(args) != 0 { + c.Ui.Error(c.Help()) + return 1 + } + + c.InitOpts() + _, err := c.parseOpts(args) + if err != nil { + if errwrap.Contains(err, "flag: help requested") { + return 0 + } + return 1 + } + + var rfcs rfcNums + sockaddr.VisitAllRFCs(func(rfcNum uint, sas sockaddr.SockAddrs) { + rfcs = append(rfcs, rfcNum) + }) + + sort.Sort(rfcs) + + for _, rfcNum := range rfcs { + c.Ui.Output(fmt.Sprintf("%d", rfcNum)) + } + + return 0 +} + +// Synopsis returns a terse description used when listing sub-commands. +func (c *RFCListCommand) Synopsis() string { + return `Lists all known RFCs` +} + +// Usage is the one-line usage description +func (c *RFCListCommand) Usage() string { + return `sockaddr rfc list` +} + +// VisitAllFlags forwards the visitor function to the FlagSet +func (c *RFCListCommand) VisitAllFlags(fn func(*flag.Flag)) { + c.flags.VisitAll(fn) +} + +func (c *RFCListCommand) parseOpts(args []string) ([]string, error) { + if err := c.flags.Parse(args); err != nil { + return nil, err + } + + return c.flags.Args(), nil +} -- cgit v1.2.3-1-g7c22