From b7efbdc12f0a96639b445f7920b6477d88beb744 Mon Sep 17 00:00:00 2001 From: digitalcraftsman Date: Sun, 3 Apr 2016 00:22:31 +0200 Subject: [PATCH] hugolib: Add option to disable rendering of 404 page Fixes #1889 Closes #2037 --- commands/hugo.go | 6 ++++++ docs/content/overview/configuration.md | 4 +++- hugolib/site.go | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/commands/hugo.go b/commands/hugo.go index 7961bef97..ce7970afc 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -127,6 +127,7 @@ var ( canonifyURLs bool cleanDestination bool enableRobotsTXT bool + disable404 bool disableRSS bool disableSitemap bool draft bool @@ -214,6 +215,7 @@ 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().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().StringVarP(&source, "source", "s", "", "filesystem path to read files relative from") @@ -266,6 +268,7 @@ func loadDefaultSettings() { viper.SetDefault("cleanDestinationDir", false) viper.SetDefault("Watch", false) viper.SetDefault("MetaDataFormat", "toml") + viper.SetDefault("Disable404", false) viper.SetDefault("DisableRSS", false) viper.SetDefault("DisableSitemap", false) viper.SetDefault("DisableRobotsTXT", false) @@ -357,6 +360,9 @@ func InitializeConfig(subCmdVs ...*cobra.Command) error { 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) } diff --git a/docs/content/overview/configuration.md b/docs/content/overview/configuration.md index 9d721d4a0..e2e25d82e 100644 --- a/docs/content/overview/configuration.md +++ b/docs/content/overview/configuration.md @@ -96,7 +96,9 @@ Following is a list of Hugo-defined variables that you can configure and their c # Do not build Sitemap file disableSitemap: false # Build robots.txt file - enableRobotsTXT: false + enableRobotsTXT: false + # Do not render 404 page + disable404: false # edit new content with this editor, if provided editor: "" # Enable Emoji emoticons support for page content. diff --git a/hugolib/site.go b/hugolib/site.go index 92fd2ffab..1c6d0257c 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -1769,6 +1769,10 @@ func (s *Site) renderHomePage() error { } } + if viper.GetBool("Disable404") { + return nil + } + // TODO(bep) reusing the Home Node smells trouble n.URL = helpers.URLize("404.html") n.IsHome = false