Permalink
Browse files

commands: Properly handle CLI slice arguments

Like `--disableKinds` -- this handling was kind of broken when we recently moved this from global vars

See #4607
  • Loading branch information...
bep committed Apr 14, 2018
1 parent bede93d commit 27a524b0905ec73c1eef233f94700feb9f465011
Showing with 19 additions and 1 deletion.
  1. +5 −0 commands/commands_test.go
  2. +14 −1 commands/hugo.go
@@ -57,8 +57,10 @@ func TestCommandsPersistentFlags(t *testing.T) {
}{{[]string{"server",
"--config=myconfig.toml",
"--contentDir=mycontent",
"--disableKinds=page,home",
"--layoutDir=mylayouts",
"--theme=mytheme",
"--gc",
"--themesDir=mythemes",
"--cleanDestinationDir",
"--navigateToChanged",
@@ -100,7 +102,10 @@ func TestCommandsPersistentFlags(t *testing.T) {
assert.Equal("mytheme", cfg.GetString("theme"))
assert.Equal("mythemes", cfg.GetString("themesDir"))
assert.Equal([]string{"page", "home"}, cfg.Get("disableKinds"))
assert.True(cfg.GetBool("uglyURLs"))
assert.True(cfg.GetBool("gc"))
// The flag is named i18n-warnings
assert.True(cfg.GetBool("logI18nWarnings"))
View
@@ -243,7 +243,20 @@ If you need to set this configuration value from the command line, set it via an
if targetKey != "" {
configKey = targetKey
}
cfg.Set(configKey, f.Value.String())
// Gotta love this API.
switch f.Value.Type() {
case "bool":
bv, _ := flags.GetBool(key)
cfg.Set(configKey, bv)
case "string":
cfg.Set(configKey, f.Value.String())
case "stringSlice":
bv, _ := flags.GetStringSlice(key)
cfg.Set(configKey, bv)
default:
panic(fmt.Sprintf("update switch with %s", f.Value.Type()))
}
}
}

0 comments on commit 27a524b

Please sign in to comment.