Skip to content

Commit

Permalink
commands: Make the server flag --renderToDisk into --renderToMemory (…
Browse files Browse the repository at this point in the history
…note)

Fixes #11987
  • Loading branch information
bep committed Feb 5, 2024
1 parent 58d7f83 commit 9c6d377
Show file tree
Hide file tree
Showing 13 changed files with 28 additions and 28 deletions.
11 changes: 4 additions & 7 deletions commands/commandeer.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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.
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion commands/hugobuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
23 changes: 13 additions & 10 deletions commands/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}

Expand Down Expand Up @@ -444,7 +446,6 @@ type serverCommand struct {
doLiveReload bool

// Flags.
renderToDisk bool
renderStaticToDisk bool
navigateToChanged bool
serverAppend bool
Expand Down Expand Up @@ -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
Expand All @@ -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")
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server.txt
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server__edit_config.txt
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server__edit_content.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server__multihost.txt
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server__watch_hugo_stats.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
hugo server &
hugo server --renderToMemory &

waitServer
stopServer
Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server__watch_moduleconfig.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
hugo server --disableLiveReload &
hugo server --renderToMemory --disableLiveReload &

waitServer
stopServer
Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server_disablelivereload.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
hugo server --renderToDisk --disableLiveReload &
hugo server --disableLiveReload &

waitServer

Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server_disablelivereload__config.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
hugo server --renderToDisk &
hugo server &

waitServer

Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server_render_static_to_disk.txt
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion testscripts/commands/server_render_to_memory.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 9c6d377

Please sign in to comment.