]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
commands: Add "hugo build" as an alias for "hugo"
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 30 Sep 2024 07:11:24 +0000 (09:11 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 30 Sep 2024 08:36:29 +0000 (10:36 +0200)
Closes #11391

commands/commandeer.go
commands/commands.go
docs/content/en/commands/hugo.md
docs/content/en/commands/hugo_build.md [new file with mode: 0644]
testscripts/commands/gen.txt
testscripts/commands/hugo_build.txt [new file with mode: 0644]

index e8cde2114f38cdf9b763e99f1a6b57f880487f24..841e8d81cbabc6a2fce33f557368547a294ca921 100644 (file)
@@ -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")
index e21d743ab900987c030c4e1a0ac263a28fd4b805..10ab106e277b81921a5f9f73f9061c5abbdae0b7 100644 (file)
@@ -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)
+}
index cfbe66053fd970e49ce6169e87f8af78d56c1d62..badd6d7eacfdc0f5433838e008252cbbe7521b04 100644 (file)
@@ -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 (file)
index 0000000..72686cb
--- /dev/null
@@ -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
+
index 22a936b415fb42a021f17bdeb78afcf1e4db4682..16db9fe4a9d15976395019d1ee20e0068d1aad89 100644 (file)
@@ -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 (file)
index 0000000..0bcbcba
--- /dev/null
@@ -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"
+---