blob: a429651715b13769c1025d2a564e804b25423721 [file] [log] [blame]
Cosmos Nicolaou4e213d72014-10-26 22:21:52 -07001package core
2
3import (
4 "flag"
5 "fmt"
6
7 "veyron.io/veyron/veyron2/ipc"
8
9 "veyron.io/veyron/veyron/lib/flags"
10)
11
Adam Sadovskyd21d95a2014-10-29 09:56:59 -070012func parseFlags(fl *flags.Flags, args []string) error {
13 if len(args) == 0 {
14 return nil
15 }
16 return fl.Parse(args[1:])
17}
18
19// parseListenFlags parses the given args using just the flags and env vars
20// defined in the veyron/lib/flags package.
Cosmos Nicolaoud811b072014-10-28 17:46:27 -070021func parseListenFlags(args []string) (*flags.Flags, []string, error) {
Cosmos Nicolaou4e213d72014-10-26 22:21:52 -070022 fs := flag.NewFlagSet("modules/core", flag.ContinueOnError)
Cosmos Nicolaoud811b072014-10-28 17:46:27 -070023 fl := flags.CreateAndRegister(fs, flags.Listen)
Adam Sadovskyd21d95a2014-10-29 09:56:59 -070024 err := parseFlags(fl, args)
Cosmos Nicolaoud811b072014-10-28 17:46:27 -070025 return fl, fl.Args(), err
Cosmos Nicolaou4e213d72014-10-26 22:21:52 -070026}
27
28func initListenSpec(fl *flags.Flags) ipc.ListenSpec {
Cosmos Nicolaoud811b072014-10-28 17:46:27 -070029 lf := fl.ListenFlags()
Cosmos Nicolaou4e213d72014-10-26 22:21:52 -070030 return ipc.ListenSpec{
Cosmos Nicolaoud811b072014-10-28 17:46:27 -070031 Protocol: lf.ListenProtocol.String(),
32 Address: lf.ListenAddress.String(),
33 Proxy: lf.ListenProxy,
Cosmos Nicolaou4e213d72014-10-26 22:21:52 -070034 }
35}
36
Adam Sadovskyd21d95a2014-10-29 09:56:59 -070037// checkArgs checks for the expected number of args in args. A negative
Cosmos Nicolaou4e213d72014-10-26 22:21:52 -070038// value means at least that number of args are expected.
39func checkArgs(args []string, expected int, usage string) error {
40 got := len(args)
41 if expected < 0 {
42 expected = -expected
43 if got < expected {
44 return fmt.Errorf("wrong # args (got %d, expected >=%d) expected: %q got: %v", got, expected, usage, args)
45 }
46 } else {
47 if got != expected {
48 return fmt.Errorf("wrong # args (got %d, expected %d) expected: %q got: %v", got, expected, usage, args)
49 }
50 }
51 return nil
52}