aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2024-09-30 09:11:24 +0200
committerBjørn Erik Pedersen <[email protected]>2024-09-30 10:36:29 +0200
commit0450d69fc6ec2e3369d106547b6e49c539081cdc (patch)
treefaeab438782410d7d02d29b60ea3b35ca8e4fdbb
parent1158e6307212fd3ff96f29db0baf79463e0c031e (diff)
downloadhugo-0450d69fc6ec2e3369d106547b6e49c539081cdc.tar.gz
hugo-0450d69fc6ec2e3369d106547b6e49c539081cdc.zip
commands: Add "hugo build" as an alias for "hugo"
Closes #11391
-rw-r--r--commands/commandeer.go16
-rw-r--r--commands/commands.go33
-rw-r--r--docs/content/en/commands/hugo.md1
-rw-r--r--docs/content/en/commands/hugo_build.md74
-rw-r--r--testscripts/commands/gen.txt2
-rw-r--r--testscripts/commands/hugo_build.txt20
6 files changed, 142 insertions, 4 deletions
diff --git a/commands/commandeer.go b/commands/commandeer.go
index e8cde2114..841e8d81c 100644
--- a/commands/commandeer.go
+++ b/commands/commandeer.go
@@ -499,16 +499,26 @@ func (r *rootCommand) IsTestRun() bool {
}
func (r *rootCommand) Init(cd *simplecobra.Commandeer) error {
+ return r.initRootCommand("", cd)
+}
+
+func (r *rootCommand) initRootCommand(subCommandName string, cd *simplecobra.Commandeer) error {
cmd := cd.CobraCommand
- cmd.Use = "hugo [flags]"
- cmd.Short = "hugo builds your site"
- cmd.Long = `hugo is the main command, used to build your Hugo site.
+ commandName := "hugo"
+ if subCommandName != "" {
+ commandName = subCommandName
+ }
+ cmd.Use = fmt.Sprintf("%s [flags]", commandName)
+ cmd.Short = fmt.Sprintf("%s builds your site", commandName)
+ cmd.Long = `COMMAND_NAME is the main command, used to build your Hugo site.
Hugo is a Fast and Flexible Static Site Generator
built with love by spf13 and friends in Go.
Complete documentation is available at https://gohugo.io/.`
+ cmd.Long = strings.ReplaceAll(cmd.Long, "COMMAND_NAME", commandName)
+
// Configure persistent flags
cmd.PersistentFlags().StringVarP(&r.source, "source", "s", "", "filesystem path to read files relative from")
_ = cmd.MarkFlagDirname("source")
diff --git a/commands/commands.go b/commands/commands.go
index e21d743ab..10ab106e2 100644
--- a/commands/commands.go
+++ b/commands/commands.go
@@ -14,6 +14,8 @@
package commands
import (
+ "context"
+
"github.com/bep/simplecobra"
)
@@ -21,6 +23,7 @@ import (
func newExec() (*simplecobra.Exec, error) {
rootCmd := &rootCommand{
commands: []simplecobra.Commander{
+ newHugoBuildCmd(),
newVersionCmd(),
newEnvCommand(),
newServerCommand(),
@@ -38,3 +41,33 @@ func newExec() (*simplecobra.Exec, error) {
return simplecobra.New(rootCmd)
}
+
+func newHugoBuildCmd() simplecobra.Commander {
+ return &hugoBuildCommand{}
+}
+
+// hugoBuildCommand just delegates to the rootCommand.
+type hugoBuildCommand struct {
+ rootCmd *rootCommand
+}
+
+func (c *hugoBuildCommand) Commands() []simplecobra.Commander {
+ return nil
+}
+
+func (c *hugoBuildCommand) Name() string {
+ return "build"
+}
+
+func (c *hugoBuildCommand) Init(cd *simplecobra.Commandeer) error {
+ c.rootCmd = cd.Root.Command.(*rootCommand)
+ return c.rootCmd.initRootCommand("build", cd)
+}
+
+func (c *hugoBuildCommand) PreRun(cd, runner *simplecobra.Commandeer) error {
+ return c.rootCmd.PreRun(cd, runner)
+}
+
+func (c *hugoBuildCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error {
+ return c.rootCmd.Run(ctx, cd, args)
+}
diff --git a/docs/content/en/commands/hugo.md b/docs/content/en/commands/hugo.md
index cfbe66053..badd6d7ea 100644
--- a/docs/content/en/commands/hugo.md
+++ b/docs/content/en/commands/hugo.md
@@ -70,6 +70,7 @@ hugo [flags]
### SEE ALSO
+* [hugo build](/commands/hugo_build/) - build builds your site
* [hugo completion](/commands/hugo_completion/) - Generate the autocompletion script for the specified shell
* [hugo config](/commands/hugo_config/) - Print the site configuration
* [hugo convert](/commands/hugo_convert/) - Convert your content to different formats
diff --git a/docs/content/en/commands/hugo_build.md b/docs/content/en/commands/hugo_build.md
new file mode 100644
index 000000000..72686cb9b
--- /dev/null
+++ b/docs/content/en/commands/hugo_build.md
@@ -0,0 +1,74 @@
+---
+title: "hugo build"
+slug: hugo_build
+url: /commands/hugo_build/
+---
+## hugo build
+
+build builds your site
+
+### Synopsis
+
+build is the main command, used to build your Hugo site.
+
+Hugo is a Fast and Flexible Static Site Generator
+built with love by spf13 and friends in Go.
+
+Complete documentation is available at https://gohugo.io/.
+
+```
+hugo build [flags]
+```
+
+### Options
+
+```
+ -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/
+ -D, --buildDrafts include content marked as draft
+ -E, --buildExpired include expired content
+ -F, --buildFuture include content with publishdate in the future
+ --cacheDir string filesystem path to cache directory
+ --cleanDestinationDir remove files from destination not found in static directories
+ --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00
+ --config string config file (default is hugo.yaml|json|toml)
+ --configDir string config dir (default "config")
+ -c, --contentDir string filesystem path to content directory
+ --debug debug output
+ -d, --destination string filesystem path to write files to
+ --disableKinds strings disable different kind of pages (home, RSS etc.)
+ --enableGitInfo add Git revision, date, author, and CODEOWNERS info to the pages
+ -e, --environment string build environment
+ --forceSyncStatic copy all files when static is changed.
+ --gc enable to run some cleanup tasks (remove unused cache files) after the build
+ -h, --help help for build
+ --ignoreCache ignores the cache directory
+ --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern
+ -l, --layoutDir string filesystem path to layout directory
+ --logLevel string log level (debug|info|warn|error)
+ --minify minify any supported output format (HTML, XML etc.)
+ --noBuildLock don't create .hugo_build.lock file
+ --noChmod don't sync permission mode of files
+ --noTimes don't sync modification time of files
+ --panicOnWarning panic on first WARNING log
+ --poll string set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes
+ --printI18nWarnings print missing translations
+ --printMemoryUsage print memory usage to screen at intervals
+ --printPathWarnings print warnings on duplicate target paths etc.
+ --printUnusedTemplates print warnings on unused templates.
+ --quiet build in quiet mode
+ --renderSegments strings named segments to render (configured in the segments config)
+ -M, --renderToMemory render to memory (mostly useful when running the server)
+ -s, --source string filesystem path to read files relative from
+ --templateMetrics display metrics about template executions
+ --templateMetricsHints calculate some improvement hints when combined with --templateMetrics
+ -t, --theme strings themes to use (located in /themes/THEMENAME/)
+ --themesDir string filesystem path to themes directory
+ --trace file write trace to file (not useful in general)
+ -v, --verbose verbose output
+ -w, --watch watch filesystem for changes and recreate as needed
+```
+
+### SEE ALSO
+
+* [hugo](/commands/hugo/) - hugo builds your site
+
diff --git a/testscripts/commands/gen.txt b/testscripts/commands/gen.txt
index 22a936b41..16db9fe4a 100644
--- a/testscripts/commands/gen.txt
+++ b/testscripts/commands/gen.txt
@@ -1,6 +1,6 @@
# Test the gen commands.
# Note that adding new commands will require updating the NUM_COMMANDS value.
-env NUM_COMMANDS=43
+env NUM_COMMANDS=44
hugo gen -h
stdout 'A collection of several useful generators\.'
diff --git a/testscripts/commands/hugo_build.txt b/testscripts/commands/hugo_build.txt
new file mode 100644
index 000000000..0bcbcba7a
--- /dev/null
+++ b/testscripts/commands/hugo_build.txt
@@ -0,0 +1,20 @@
+# Test the hugo build command (alias for hugo)
+
+hugo build
+stdout 'Pages.*|1'
+stdout 'Total in'
+checkfile public/index.html
+checkfile public/p1/index.html
+grep 'IsServer: false;IsProduction: true' public/index.html
+
+-- hugo.toml --
+baseURL = "http://example.org/"
+disableKinds = ["RSS", "sitemap", "robotsTXT", "404", "taxonomy", "term"]
+-- layouts/index.html --
+Home|IsServer: {{ hugo.IsServer }};IsProduction: {{ hugo.IsProduction }}|
+-- layouts/_default/single.html --
+Title: {{ .Title }}
+-- content/p1.md --
+---
+title: "P1"
+---