ref: 3a86aba517f9feab4e2359b7efe71fb126092be5
parent: c9be931ebec10f016c729d3ec7b4eed25c0bbc72
author: Albert Nigmatzianov <albertnigma@gmail.com>
date: Thu Nov 3 07:33:53 EDT 2016
commands: Move initialization of flags in separate function And clean up flag variables.
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -129,28 +129,12 @@
// Flags that are to be added to commands.
var (
- buildWatch bool
- canonifyURLs bool
- cleanDestination bool
- enableRobotsTXT bool
- enableGitInfo bool
- disable404 bool
- disableRSS bool
- disableSitemap bool
- draft bool
- forceSync bool
- future bool
- expired bool
- ignoreCache bool
- logging bool
- noTimes bool
- pluralizeListTitles bool
- preserveTaxonomyNames bool
- renderToMemory bool // for benchmark testing
- uglyURLs bool
- verbose bool
- verboseLog bool
- quiet bool
+ buildWatch bool
+ logging bool
+ renderToMemory bool // for benchmark testing
+ verbose bool
+ verboseLog bool
+ quiet bool
)
var (
@@ -221,30 +205,30 @@
// initHugoBuildCommonFlags initialize common flags related to the Hugo build.
// Called by initHugoBuilderFlags.
func initHugoBuildCommonFlags(cmd *cobra.Command) {- cmd.Flags().BoolVar(&cleanDestination, "cleanDestinationDir", false, "Remove files from destination not found in static directories")
- cmd.Flags().BoolVarP(&draft, "buildDrafts", "D", false, "include content marked as draft")
- cmd.Flags().BoolVarP(&future, "buildFuture", "F", false, "include content with publishdate in the future")
- cmd.Flags().BoolVarP(&expired, "buildExpired", "E", false, "include expired content")
- cmd.Flags().BoolVar(&disable404, "disable404", false, "Do not render 404 page")
- cmd.Flags().BoolVar(&disableRSS, "disableRSS", false, "Do not build RSS files")
- cmd.Flags().BoolVar(&disableSitemap, "disableSitemap", false, "Do not build Sitemap file")
+ cmd.Flags().Bool("cleanDestinationDir", false, "Remove files from destination not found in static directories")+ cmd.Flags().BoolP("buildDrafts", "D", false, "include content marked as draft")+ cmd.Flags().BoolP("buildFuture", "F", false, "include content with publishdate in the future")+ cmd.Flags().BoolP("buildExpired", "E", false, "include expired content")+ cmd.Flags().Bool("disable404", false, "Do not render 404 page")+ cmd.Flags().Bool("disableRSS", false, "Do not build RSS files")+ cmd.Flags().Bool("disableSitemap", false, "Do not build Sitemap file")cmd.Flags().StringVarP(&source, "source", "s", "", "filesystem path to read files relative from")
cmd.Flags().StringVarP(&contentDir, "contentDir", "c", "", "filesystem path to content directory")
cmd.Flags().StringVarP(&layoutDir, "layoutDir", "l", "", "filesystem path to layout directory")
cmd.Flags().StringVarP(&cacheDir, "cacheDir", "", "", "filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/")
- cmd.Flags().BoolVarP(&ignoreCache, "ignoreCache", "", false, "Ignores the cache directory")
+ cmd.Flags().BoolP("ignoreCache", "", false, "Ignores the cache directory")cmd.Flags().StringVarP(&destination, "destination", "d", "", "filesystem path to write files to")
cmd.Flags().StringVarP(&theme, "theme", "t", "", "theme to use (located in /themes/THEMENAME/)")
- cmd.Flags().BoolVar(&uglyURLs, "uglyURLs", false, "if true, use /filename.html instead of /filename/")
- cmd.Flags().BoolVar(&canonifyURLs, "canonifyURLs", false, "if true, all relative URLs will be canonicalized using baseURL")
+ cmd.Flags().Bool("uglyURLs", false, "if true, use /filename.html instead of /filename/")+ cmd.Flags().Bool("canonifyURLs", false, "if true, all relative URLs will be canonicalized using baseURL")cmd.Flags().StringVarP(&baseURL, "baseURL", "b", "", "hostname (and path) to the root, e.g. http://spf13.com/")
- cmd.Flags().BoolVar(&enableGitInfo, "enableGitInfo", false, "Add Git revision, date and author info to the pages")
+ cmd.Flags().Bool("enableGitInfo", false, "Add Git revision, date and author info to the pages")cmd.Flags().BoolVar(&nitro.AnalysisOn, "stepAnalysis", false, "display memory and timing of different steps of the program")
- cmd.Flags().BoolVar(&pluralizeListTitles, "pluralizeListTitles", true, "Pluralize titles in lists using inflect")
- cmd.Flags().BoolVar(&preserveTaxonomyNames, "preserveTaxonomyNames", false, `Preserve taxonomy names as written ("Gérard Depardieu" vs "gerard-depardieu")`)- cmd.Flags().BoolVarP(&forceSync, "forceSyncStatic", "", false, "Copy all files when static is changed.")
- cmd.Flags().BoolVarP(&noTimes, "noTimes", "", false, "Don't sync modification time of files")
+ cmd.Flags().Bool("pluralizeListTitles", true, "Pluralize titles in lists using inflect")+ cmd.Flags().Bool("preserveTaxonomyNames", false, `Preserve taxonomy names as written ("Gérard Depardieu" vs "gerard-depardieu")`)+ cmd.Flags().BoolP("forceSyncStatic", "", false, "Copy all files when static is changed.")+ cmd.Flags().BoolP("noTimes", "", false, "Don't sync modification time of files")cmd.Flags().BoolVarP(&tpl.Logi18nWarnings, "i18n-warnings", "", false, "Print missing translations")
// Set bash-completion.
@@ -284,62 +268,7 @@
}
for _, cmdV := range append([]*cobra.Command{hugoCmdV}, subCmdVs...) {-
- 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)- }
- if flagChanged(cmdV.Flags(), "uglyURLs") {- viper.Set("uglyURLs", uglyURLs)- }
- if flagChanged(cmdV.Flags(), "canonifyURLs") {- viper.Set("canonifyURLs", canonifyURLs)- }
- if flagChanged(cmdV.Flags(), "disable404") {- viper.Set("disable404", disable404)- }
- if flagChanged(cmdV.Flags(), "disableRSS") {- viper.Set("disableRSS", disableRSS)- }
- if flagChanged(cmdV.Flags(), "disableSitemap") {- viper.Set("disableSitemap", disableSitemap)- }
- if flagChanged(cmdV.Flags(), "enableRobotsTXT") {- viper.Set("enableRobotsTXT", enableRobotsTXT)- }
- if flagChanged(cmdV.Flags(), "enableGitInfo") {- viper.Set("enableGitInfo", enableGitInfo)- }
- if flagChanged(cmdV.Flags(), "pluralizeListTitles") {- viper.Set("pluralizeListTitles", pluralizeListTitles)- }
- if flagChanged(cmdV.Flags(), "preserveTaxonomyNames") {- viper.Set("preserveTaxonomyNames", preserveTaxonomyNames)- }
- if flagChanged(cmdV.Flags(), "ignoreCache") {- viper.Set("ignoreCache", ignoreCache)- }
- if flagChanged(cmdV.Flags(), "forceSyncStatic") {- viper.Set("forceSyncStatic", forceSync)- }
- if flagChanged(cmdV.Flags(), "noTimes") {- viper.Set("noTimes", noTimes)- }
-
+ initializeFlags(cmdV)
}
if baseURL != "" {@@ -439,6 +368,42 @@
}
+func initializeFlags(cmd *cobra.Command) {+ persFlagKeys := []string{"verbose", "logFile"}+ flagKeys := []string{+ "cleanDestinationDir",
+ "buildDrafts",
+ "buildFuture",
+ "buildExpired",
+ "uglyURLs",
+ "canonifyURLs",
+ "disable404",
+ "disableRSS",
+ "disableSitemap",
+ "enableRobotsTXT",
+ "enableGitInfo",
+ "pluralizeListTitles",
+ "preserveTaxonomyNames",
+ "ignoreCache",
+ "forceSyncStatic",
+ "noTimes",
+ }
+
+ for _, key := range persFlagKeys {+ setValueFromFlag(cmd.PersistentFlags(), key)
+ }
+ for _, key := range flagKeys {+ setValueFromFlag(cmd.Flags(), key)
+ }
+}
+
+func setValueFromFlag(flags *flag.FlagSet, key string) {+ if flagChanged(flags, key) {+ f := flags.Lookup(key)
+ viper.Set(key, f.Value.String())
+ }
+}
+
func flagChanged(flags *flag.FlagSet, key string) bool {flag := flags.Lookup(key)
if flag == nil {@@ -553,7 +518,7 @@
}
syncer := fsync.NewSyncer()
- syncer.NoTimes = viper.GetBool("notimes")+ syncer.NoTimes = viper.GetBool("noTimes")syncer.SrcFs = staticSourceFs
syncer.DestFs = hugofs.Destination()
// Now that we are using a unionFs for the static directories
@@ -832,7 +797,7 @@
}
syncer := fsync.NewSyncer()
- syncer.NoTimes = viper.GetBool("notimes")+ syncer.NoTimes = viper.GetBool("noTimes")syncer.SrcFs = staticSourceFs
syncer.DestFs = hugofs.Destination()
--
⑨