Viper: why hugo sets keys in upper case?

I’m just reading hugo code and can’t understand, why hugo sets keys to viper in upper case, when viper.Get and Set methods are case insensitive. It really confuses
For example, in file commands/hugo.go:

if flagChanged(cmdV.PersistentFlags(), "verbose") {
	viper.Set("Verbose", verbose)
if flagChanged(cmdV.PersistentFlags(), "logFile") {
	viper.Set("LogFile", logFile)
if flagChanged(cmdV.Flags(), "cleanDestinationDir") {
	viper.Set("cleanDestinationDir", cleanDestination)
if flagChanged(cmdV.Flags(), "buildDrafts") {
	viper.Set("BuildDrafts", draft)
if flagChanged(cmdV.Flags(), "buildFuture") {
	viper.Set("BuildFuture", future)
if flagChanged(cmdV.Flags(), "buildExpired") {
	viper.Set("BuildExpired", expired)

Why all keys are in uppercase except cleanDestinationDIr?
Maybe it will be better to use all keys in lowercase to make no confusions?

I thing this is a naming pattern that @spf13 started for no good reason (the only thing I can think of is that it matches Go’s way of marking a method/field as exported …).

I guess the rest of us have just followed the examples given before …

In my head we should have them on this form:


But there are some work to be done to clean up that, both in code and doc.

Ok, I’ll make a PR soon to clean this up, because it’s really annoying. I’ll try to find all upper-case keys in doc and code