Skip to content

Commit

Permalink
Revert "config: return error on extra command line arguments (#3397)"
Browse files Browse the repository at this point in the history
This reverts commit ce935ce.
  • Loading branch information
magiconair authored Oct 23, 2017
1 parent c085ac7 commit cb151a7
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 28 deletions.
6 changes: 0 additions & 6 deletions agent/config/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,6 @@ type Builder struct {
// NewBuilder returns a new configuration builder based on the given command
// line flags.
func NewBuilder(flags Flags) (*Builder, error) {
// We expect all flags to be parsed and flags.Args to be empty.
// Therefore, we bail if we find unparsed args.
if len(flags.Args) > 0 {
return nil, fmt.Errorf("config: Unknown extra arguments: %v", flags.Args)
}

newSource := func(name string, v interface{}) Source {
b, err := json.MarshalIndent(v, "", " ")
if err != nil {
Expand Down
12 changes: 10 additions & 2 deletions agent/config/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,17 @@ type Flags struct {

// HCL contains an arbitrary config in hcl format.
HCL []string
}

// Args contains the remaining unparsed flags.
Args []string
// ParseFlag parses the arguments into a Flags struct.
func ParseFlags(args []string) (Flags, error) {
var f Flags
fs := flag.NewFlagSet("agent", flag.ContinueOnError)
AddFlags(fs, &f)
if err := fs.Parse(args); err != nil {
return Flags{}, err
}
return f, nil
}

// AddFlags adds the command line flags for the agent.
Expand Down
15 changes: 5 additions & 10 deletions agent/config/flags_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package config

import (
"flag"
"reflect"
"strings"
"testing"
Expand Down Expand Up @@ -36,6 +35,10 @@ func TestParseFlags(t *testing.T) {
args: []string{`-bootstrap=false`},
flags: Flags{Config: Config{Bootstrap: pBool(false)}},
},
{
args: []string{`-bootstrap`, `true`},
flags: Flags{Config: Config{Bootstrap: pBool(true)}},
},
{
args: []string{`-config-file`, `a`, `-config-dir`, `b`, `-config-file`, `c`, `-config-dir`, `d`},
flags: Flags{ConfigFiles: []string{"a", "b", "c", "d"}},
Expand All @@ -56,22 +59,14 @@ func TestParseFlags(t *testing.T) {
args: []string{`-node-meta`, `a:b`, `-node-meta`, `c:d`},
flags: Flags{Config: Config{NodeMeta: map[string]string{"a": "b", "c": "d"}}},
},
{
args: []string{`-bootstrap`, `true`},
flags: Flags{Config: Config{Bootstrap: pBool(true)}, Args: []string{"true"}},
},
}

for _, tt := range tests {
t.Run(strings.Join(tt.args, " "), func(t *testing.T) {
flags := Flags{}
fs := flag.NewFlagSet("", flag.ContinueOnError)
AddFlags(fs, &flags)
err := fs.Parse(tt.args)
flags, err := ParseFlags(tt.args)
if got, want := err, tt.err; !reflect.DeepEqual(got, want) {
t.Fatalf("got error %v want %v", got, want)
}
flags.Args = fs.Args()
if !verify.Values(t, "flag", flags, tt.flags) {
t.FailNow()
}
Expand Down
6 changes: 1 addition & 5 deletions agent/config/runtime_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1886,14 +1886,10 @@ func testConfig(t *testing.T, tests []configTest, dataDir string) {

t.Run(strings.Join(desc, ":"), func(t *testing.T) {
// first parse the flags
flags := Flags{}
fs := flag.NewFlagSet("", flag.ContinueOnError)
AddFlags(fs, &flags)
err := fs.Parse(tt.args)
flags, err := ParseFlags(tt.args)
if err != nil {
t.Fatalf("ParseFlags failed: %s", err)
}
flags.Args = fs.Args()

// Then create a builder with the flags.
b, err := NewBuilder(flags)
Expand Down
1 change: 0 additions & 1 deletion command/agent/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ func (c *cmd) readConfig() *config.RuntimeConfig {
}
return nil
}
c.flagArgs.Args = c.flags.Args()

b, err := config.NewBuilder(c.flagArgs)
if err != nil {
Expand Down
4 changes: 0 additions & 4 deletions command/agent/agent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ func TestConfigFail(t *testing.T) {
args: []string{"agent", "-server", "-bind=10.0.0.1", "-datacenter="},
out: "==> datacenter cannot be empty\n",
},
{
args: []string{"agent", "-server", "-bind=10.0.0.1", "-datacenter=foo", "some-other-arg"},
out: "==> config: Unknown extra arguments: [some-other-arg]\n",
},
{
args: []string{"agent", "-server", "-bind=10.0.0.1"},
out: "==> data_dir cannot be empty\n",
Expand Down

0 comments on commit cb151a7

Please sign in to comment.