mirror of
https://github.com/status-im/consul.git
synced 2025-01-23 20:19:29 +00:00
Revert "config: return error on extra command line arguments (#3397)"
This reverts commit ce935cef55f7298e85843b3ca17ad13415e40e0b.
This commit is contained in:
parent
078e50b635
commit
1073de49db
@ -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 {
|
||||
|
@ -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.
|
||||
|
@ -1,7 +1,6 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
@ -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"}},
|
||||
@ -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()
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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 {
|
||||
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user