hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 27a524b0905ec73c1eef233f94700feb9f465011
parent bede93de005dcf934f3ec9be6388310ac6c57acd
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Sat, 14 Apr 2018 10:34:02 +0200

commands: Properly handle CLI slice arguments

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

See #4607

Diffstat:
Mcommands/commands_test.go | 5+++++
Mcommands/hugo.go | 15++++++++++++++-
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/commands/commands_test.go b/commands/commands_test.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"))
diff --git a/commands/hugo.go b/commands/hugo.go
@@ -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()))
+		}
+
 	}
 }