]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
commands: Make the server flag --renderToDisk into --renderToMemory (note)
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 5 Feb 2024 08:44:28 +0000 (09:44 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 5 Feb 2024 13:04:17 +0000 (14:04 +0100)
Fixes #11987

13 files changed:
commands/commandeer.go
commands/hugobuilder.go
commands/server.go
testscripts/commands/server.txt
testscripts/commands/server__edit_config.txt
testscripts/commands/server__edit_content.txt
testscripts/commands/server__multihost.txt
testscripts/commands/server__watch_hugo_stats.txt
testscripts/commands/server__watch_moduleconfig.txt
testscripts/commands/server_disablelivereload.txt
testscripts/commands/server_disablelivereload__config.txt
testscripts/commands/server_render_static_to_disk.txt
testscripts/commands/server_render_to_memory.txt

index 0052d91b4c62115d17f0171ec0790cef0da4913d..82d684153a52e47621c974c13a7c76dabddcf021 100644 (file)
@@ -203,9 +203,6 @@ func (r *rootCommand) ConfigFromProvider(key int32, cfg config.Provider) (*commo
                        cfg = config.New()
                }
 
-               if !cfg.IsSet("renderToDisk") {
-                       cfg.Set("renderToDisk", true)
-               }
                if !cfg.IsSet("workingDir") {
                        cfg.Set("workingDir", dir)
                } else {
@@ -239,9 +236,7 @@ func (r *rootCommand) ConfigFromProvider(key int32, cfg config.Provider) (*commo
 
                sourceFs := hugofs.Os
                var destinationFs afero.Fs
-               if cfg.GetBool("renderToDisk") {
-                       destinationFs = hugofs.Os
-               } else {
+               if cfg.GetBool("renderToMemory") {
                        destinationFs = afero.NewMemMapFs()
                        if renderStaticToDisk {
                                // Hybrid, render dynamic content to Root.
@@ -251,6 +246,8 @@ func (r *rootCommand) ConfigFromProvider(key int32, cfg config.Provider) (*commo
                                cfg.Set("publishDirDynamic", "/")
                                cfg.Set("publishDirStatic", "/")
                        }
+               } else {
+                       destinationFs = hugofs.Os
                }
 
                fs := hugofs.NewFromSourceAndDestination(sourceFs, destinationFs, cfg)
@@ -498,6 +495,7 @@ Complete documentation is available at https://gohugo.io/.`
        cmd.PersistentFlags().StringVar(&r.cfgFile, "config", "", "config file (default is hugo.yaml|json|toml)")
        cmd.PersistentFlags().StringVar(&r.cfgDir, "configDir", "config", "config dir")
        cmd.PersistentFlags().BoolVar(&r.quiet, "quiet", false, "build in quiet mode")
+       cmd.PersistentFlags().BoolVar(&r.renderToMemory, "renderToMemory", false, "render to memory (mostly useful when running the server)")
 
        // Set bash-completion
        _ = cmd.PersistentFlags().SetAnnotation("config", cobra.BashCompFilenameExt, config.ValidConfigFileExtensions)
@@ -506,7 +504,6 @@ Complete documentation is available at https://gohugo.io/.`
        cmd.PersistentFlags().BoolVarP(&r.debug, "debug", "", false, "debug output")
        cmd.PersistentFlags().StringVar(&r.logLevel, "logLevel", "", "log level (debug|info|warn|error)")
        cmd.Flags().BoolVarP(&r.buildWatch, "watch", "w", false, "watch filesystem for changes and recreate as needed")
-       cmd.Flags().BoolVar(&r.renderToMemory, "renderToMemory", false, "render to memory (only useful for benchmark testing)")
 
        // Configure local flags
        applyLocalFlagsBuild(cmd, r)
index 190c12f599b9243014274ff4cbe4dd988d7b151b..6ae9640b08c7b9da8465de705e657c3b0c9c1c0a 100644 (file)
@@ -928,7 +928,7 @@ func (c *hugoBuilder) hugoTry() *hugolib.HugoSites {
 
 func (c *hugoBuilder) loadConfig(cd *simplecobra.Commandeer, running bool) error {
        cfg := config.New()
-       cfg.Set("renderToDisk", (c.s == nil && !c.r.renderToMemory) || (c.s != nil && c.s.renderToDisk))
+       cfg.Set("renderToMemory", c.r.renderToMemory)
        watch := c.r.buildWatch || (c.s != nil && c.s.serverWatch)
        if c.r.environment == "" {
                // We need to set the environment as early as possible because we need it to load the correct config.
index 574f5c3404c092df84c7c49e8ebb4fdeba7165a5..e803d48249e5541cffd9f5d9ea7b32542ee5005e 100644 (file)
@@ -239,12 +239,14 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, net.Listener, string
        r.Printf("Environment: %q\n", f.c.hugoTry().Deps.Site.Hugo().Environment)
 
        if i == 0 {
-               if f.c.renderToDisk {
-                       r.Println("Serving pages from disk")
-               } else if f.c.renderStaticToDisk {
-                       r.Println("Serving pages from memory and static files from disk")
+               mainTarget := "disk"
+               if f.c.r.renderToMemory {
+                       mainTarget = "memory"
+               }
+               if f.c.renderStaticToDisk {
+                       r.Printf("Serving pages from %s and static files from disk\n", mainTarget)
                } else {
-                       r.Println("Serving pages from memory")
+                       r.Printf("Serving pages from %s\n", mainTarget)
                }
        }
 
@@ -444,7 +446,6 @@ type serverCommand struct {
        doLiveReload bool
 
        // Flags.
-       renderToDisk        bool
        renderStaticToDisk  bool
        navigateToChanged   bool
        serverAppend        bool
@@ -516,8 +517,9 @@ func (c *serverCommand) Init(cd *simplecobra.Commandeer) error {
        cmd.Long = `Hugo provides its own webserver which builds and serves the site.
 While hugo server is high performance, it is a webserver with limited options.
 
-'hugo server' will avoid writing the rendered and served content to disk,
-preferring to store it in memory.
+'hugo server' will by default write and server files from disk, but you can
+render to memory by using the '--renderToMemory' flag. This can be faster
+in some cases, but it will consume more memory.
 
 By default hugo will also watch your files for any changes you make and
 automatically rebuild the site. It will then live reload any open browser pages
@@ -537,7 +539,6 @@ of a second, you will be able to save and see your changes nearly instantly.`
        cmd.Flags().BoolVarP(&c.serverAppend, "appendPort", "", true, "append port to baseURL")
        cmd.Flags().BoolVar(&c.disableLiveReload, "disableLiveReload", false, "watch without enabling live browser reload on rebuild")
        cmd.Flags().BoolVar(&c.navigateToChanged, "navigateToChanged", false, "navigate to changed content file on live browser reload")
-       cmd.Flags().BoolVar(&c.renderToDisk, "renderToDisk", false, "serve all files from disk (default is from memory)")
        cmd.Flags().BoolVar(&c.renderStaticToDisk, "renderStaticToDisk", false, "serve static files from disk and dynamic files from memory")
        cmd.Flags().BoolVar(&c.disableFastRender, "disableFastRender", false, "enables full re-renders on changes")
        cmd.Flags().BoolVar(&c.disableBrowserError, "disableBrowserError", false, "do not show build errors in the browser")
@@ -589,7 +590,9 @@ func (c *serverCommand) PreRun(cd, runner *simplecobra.Commandeer) error {
        )
 
        destinationFlag := cd.CobraCommand.Flags().Lookup("destination")
-       c.renderToDisk = c.renderToDisk || (destinationFlag != nil && destinationFlag.Changed)
+       if c.r.renderToMemory && (destinationFlag != nil && destinationFlag.Changed) {
+               return fmt.Errorf("cannot use --renderToMemory with --destination")
+       }
        c.doLiveReload = !c.disableLiveReload
        c.fastRenderMode = !c.disableFastRender
        c.showErrorInBrowser = c.doLiveReload && !c.disableBrowserError
index 777a914548053542b63107bc5a55d6d6bc67e92c..83e3ceafdb6735e7100b973d9219870066dfcea2 100644 (file)
@@ -1,7 +1,7 @@
 # Test the hugo server command.
 
 # We run these tests in parallel so let Hugo decide which port to use.
-hugo server --gc &
+hugo server --renderToMemory --gc &
 
 waitServer
 
index e3972bf071e30cbb68e86532ef9fdac2630b9954..3997ca895a9a88a163d4d641294f65df6c801b23 100644 (file)
@@ -1,7 +1,7 @@
 # Test the hugo server command when editing the config file.
 
 # We run these tests in parallel so let Hugo decide which port to use.
-hugo server &
+hugo server --renderToMemory &
 
 waitServer
 
index 5a2d9d502fc7ff3e5800242a524df5cfc0effbcd..0aca2e892fabe0b197b746f93754e3005bd96393 100644 (file)
@@ -2,7 +2,7 @@
 
 # We run these tests in parallel so let Hugo decide which port to use.
 # Render to disk so we can check the /public dir.
-hugo server --renderToDisk &
+hugo server &
 
 waitServer
 
index 492cac855a529729415c179a306569e1940af129..8888863701df64eec11224ef71468a317a07c190 100644 (file)
@@ -1,7 +1,7 @@
 # Test the hugo server command.
 
 # We run these tests in parallel so let Hugo decide which port to use.
-hugo server &
+hugo server --renderToMemory &
 
 waitServer
 
index 179e59f8d8bff995db8b94b35bf64a3c8b742c41..da4ffc19f40d061299b2760db511d4529f459b0f 100644 (file)
@@ -1,4 +1,4 @@
-hugo server  &
+hugo server  --renderToMemory &
 
 waitServer
 stopServer
index 867669754f4ed3f140ce30571432843448304f0b..bd84a1449f03bd50f521c7bdbff57281a9ff2ef9 100644 (file)
@@ -1,4 +1,4 @@
-hugo server --disableLiveReload  &
+hugo server --renderToMemory --disableLiveReload  &
 
 waitServer
 stopServer
index 6b1cd66cbeed4fd23e69b2c9b21e5ad27678ab34..f3f163c830b796592de2fd53480fabe246bb999c 100644 (file)
@@ -1,4 +1,4 @@
-hugo server --renderToDisk --disableLiveReload &
+hugo server --disableLiveReload &
 
 waitServer
 
index fe49ff2471d0b9c78c8d7552b85cf193009323ac..a71cde12b59adbd8fd25ff720ad41e90b49264c7 100644 (file)
@@ -1,4 +1,4 @@
-hugo server --renderToDisk &
+hugo server &
 
 waitServer
 
index b0e76e318cee218df78a755ee9aeedf650e0426e..98d6c0de88187ab37da5a8fdc263d4e6f0894a0f 100644 (file)
@@ -1,7 +1,7 @@
 # Test the hugo server command.
 
 # We run these tests in parallel so let Hugo decide which port to use.
-hugo server --renderStaticToDisk &
+hugo server --renderToMemory --renderStaticToDisk &
 
 waitServer
 
index 368efe41d1159b0c23f915e6316dac5dbeca5aba..afff92126b3680f922bb359d2d7aa3d60341a21b 100644 (file)
@@ -2,7 +2,7 @@
 
 # We run these tests in parallel so let Hugo decide which port to use.
 # Deliberately using the alias 'serve' here.
-hugo serve &
+hugo serve --renderToMemory &
 
 waitServer