From e6f029bdeef4e1a719c5e77d51006b9007d96646 Mon Sep 17 00:00:00 2001 From: davidejones Date: Fri, 3 Mar 2023 16:52:31 +0000 Subject: [PATCH] customize parallel transfer count --- commands/deploy.go | 3 +++ commands/hugo.go | 1 + deploy/deploy.go | 4 +++- docs/content/en/commands/hugo_deploy.md | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/commands/deploy.go b/commands/deploy.go index 071e10a6a..3a717201e 100644 --- a/commands/deploy.go +++ b/commands/deploy.go @@ -31,6 +31,7 @@ type deployCmd struct { invalidateCDN bool maxDeletes int + transfers int } // TODO: In addition to the "deploy" command, consider adding a "--deploy" @@ -59,6 +60,7 @@ documentation. cfgInit := func(c *commandeer) error { c.Set("invalidateCDN", cc.invalidateCDN) c.Set("maxDeletes", cc.maxDeletes) + c.Set("transfers", cc.transfers) return nil } comm, err := initializeConfig(true, true, false, &cc.hugoBuilderCommon, cc, cfgInit) @@ -79,6 +81,7 @@ documentation. 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.transfers, "transfers", 10, "number of file transfers to run in parallel. defaults to 10") cc.baseBuilderCmd = b.newBuilderBasicCmd(cmd) diff --git a/commands/hugo.go b/commands/hugo.go index 2fa08ec21..156aa35b9 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -236,6 +236,7 @@ func initializeFlags(cmd *cobra.Command, cfg config.Provider) { "target", "theme", "themesDir", + "transfers", "verbose", "verboseLog", "duplicateTargetPaths", diff --git a/deploy/deploy.go b/deploy/deploy.go index 5675d7aa0..e2a12ca7f 100644 --- a/deploy/deploy.go +++ b/deploy/deploy.go @@ -65,6 +65,7 @@ type Deployer struct { force bool // true forces upload of all files invalidateCDN bool // true enables invalidate CDN cache (if possible) maxDeletes int // caps the # of files to delete; -1 to disable + transfers int // The number of file transfers to run in parallel // For tests... summary deploySummary // summary of latest Deploy results @@ -118,6 +119,7 @@ func New(cfg config.Provider, localFs afero.Fs) (*Deployer, error) { force: cfg.GetBool("force"), invalidateCDN: cfg.GetBool("invalidateCDN"), maxDeletes: cfg.GetInt("maxDeletes"), + transfers: cfg.GetInt("transfers"), }, nil } @@ -189,7 +191,7 @@ func (d *Deployer) Deploy(ctx context.Context) error { // Apply the changes in parallel, using an inverted worker // pool (https://www.youtube.com/watch?v=5zXAHh5tJqQ&t=26m58s). // sem prevents more than nParallel concurrent goroutines. - const nParallel = 10 + nParallel := d.transfers var errs []error var errMu sync.Mutex // protects errs diff --git a/docs/content/en/commands/hugo_deploy.md b/docs/content/en/commands/hugo_deploy.md index 4e1d468b7..c3cb9f68d 100644 --- a/docs/content/en/commands/hugo_deploy.md +++ b/docs/content/en/commands/hugo_deploy.md @@ -31,6 +31,7 @@ hugo deploy [flags] --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern --invalidateCDN invalidate the CDN cache listed in the deployment target (default true) --maxDeletes int maximum # of files to delete, or -1 to disable (default 256) + --transfers int number of file transfers to run in parallel (default 10) -s, --source string filesystem path to read files relative from --target string target deployment from deployments section in config file; defaults to the first one --themesDir string filesystem path to themes directory