aboutsummaryrefslogtreecommitdiffhomepage
path: root/commands/deploy.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2023-01-04 18:24:36 +0100
committerBjørn Erik Pedersen <[email protected]>2023-05-16 18:01:29 +0200
commit241b21b0fd34d91fccb2ce69874110dceae6f926 (patch)
treed4e0118eac7e9c42f065815447a70805f8d6ad3e /commands/deploy.go
parent6aededf6b42011c3039f5f66487a89a8dd65e0e7 (diff)
downloadhugo-241b21b0fd34d91fccb2ce69874110dceae6f926.tar.gz
hugo-241b21b0fd34d91fccb2ce69874110dceae6f926.zip
Create a struct with all of Hugo's config options
Primary motivation is documentation, but it will also hopefully simplify the code. Also, * Lower case the default output format names; this is in line with the custom ones (map keys) and how it's treated all the places. This avoids doing `stringds.EqualFold` everywhere. Closes #10896 Closes #10620
Diffstat (limited to 'commands/deploy.go')
-rw-r--r--commands/deploy.go84
1 files changed, 33 insertions, 51 deletions
diff --git a/commands/deploy.go b/commands/deploy.go
index 295940c2e..0340ea3c4 100644
--- a/commands/deploy.go
+++ b/commands/deploy.go
@@ -1,4 +1,4 @@
-// Copyright 2019 The Hugo Authors. All rights reserved.
+// Copyright 2023 The Hugo Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,76 +14,58 @@
//go:build !nodeploy
// +build !nodeploy
+// Copyright 2023 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package commands
import (
"context"
+ "github.com/bep/simplecobra"
"github.com/gohugoio/hugo/deploy"
"github.com/spf13/cobra"
)
-var _ cmder = (*deployCmd)(nil)
+func newDeployCommand() simplecobra.Commander {
-// deployCmd supports deploying sites to Cloud providers.
-type deployCmd struct {
- *baseBuilderCmd
-
- invalidateCDN bool
- maxDeletes int
- workers int
-}
-
-// TODO: In addition to the "deploy" command, consider adding a "--deploy"
-// flag for the default command; this would build the site and then deploy it.
-// It's not obvious how to do this; would all of the deploy-specific flags
-// have to exist at the top level as well?
-
-// TODO: The output files change every time "hugo" is executed, it looks
-// like because of map order randomization. This means that you can
-// run "hugo && hugo deploy" again and again and upload new stuff every time. Is
-// this intended?
-
-func (b *commandsBuilder) newDeployCmd() *deployCmd {
- cc := &deployCmd{}
-
- cmd := &cobra.Command{
- Use: "deploy",
- Short: "Deploy your site to a Cloud provider.",
- Long: `Deploy your site to a Cloud provider.
+ return &simpleCommand{
+ name: "deploy",
+ short: "Deploy your site to a Cloud provider.",
+ long: `Deploy your site to a Cloud provider.
See https://gohugo.io/hosting-and-deployment/hugo-deploy/ for detailed
documentation.
`,
-
- RunE: func(cmd *cobra.Command, args []string) error {
- cfgInit := func(c *commandeer) error {
- c.Set("invalidateCDN", cc.invalidateCDN)
- c.Set("maxDeletes", cc.maxDeletes)
- c.Set("workers", cc.workers)
- return nil
- }
- comm, err := initializeConfig(true, true, false, &cc.hugoBuilderCommon, cc, cfgInit)
+ run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error {
+ h, err := r.Hugo(flagsToCfgWithAdditionalConfigBase(cd, nil, "deployment"))
if err != nil {
return err
}
- deployer, err := deploy.New(comm.Cfg, comm.hugo().PathSpec.PublishFs)
+ deployer, err := deploy.New(h.Configs.GetFirstLanguageConfig(), h.PathSpec.PublishFs)
if err != nil {
return err
}
- return deployer.Deploy(context.Background())
+ return deployer.Deploy(ctx)
+ },
+ withc: func(cmd *cobra.Command) {
+ cmd.Flags().String("target", "", "target deployment from deployments section in config file; defaults to the first one")
+ cmd.Flags().Bool("confirm", false, "ask for confirmation before making changes to the target")
+ cmd.Flags().Bool("dryRun", false, "dry run")
+ cmd.Flags().Bool("force", false, "force upload of all files")
+ cmd.Flags().Bool("invalidateCDN", true, "invalidate the CDN cache listed in the deployment target")
+ cmd.Flags().Int("maxDeletes", 256, "maximum # of files to delete, or -1 to disable")
+ cmd.Flags().Int("workers", 10, "number of workers to transfer files. defaults to 10")
},
}
-
- cmd.Flags().String("target", "", "target deployment from deployments section in config file; defaults to the first one")
- cmd.Flags().Bool("confirm", false, "ask for confirmation before making changes to the target")
- cmd.Flags().Bool("dryRun", false, "dry run")
- cmd.Flags().Bool("force", false, "force upload of all files")
- cmd.Flags().BoolVar(&cc.invalidateCDN, "invalidateCDN", true, "invalidate the CDN cache listed in the deployment target")
- cmd.Flags().IntVar(&cc.maxDeletes, "maxDeletes", 256, "maximum # of files to delete, or -1 to disable")
- cmd.Flags().IntVar(&cc.workers, "workers", 10, "number of workers to transfer files. defaults to 10")
-
- cc.baseBuilderCmd = b.newBuilderBasicCmd(cmd)
-
- return cc
}