mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-14 20:33:59 +02:00
modules: Throttle the "downloading modules …" log entries
This commit is contained in:
@@ -18,6 +18,7 @@ import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
@@ -46,8 +47,6 @@ import (
|
||||
|
||||
"github.com/gohugoio/hugo/common/hugio"
|
||||
|
||||
"errors"
|
||||
|
||||
"github.com/spf13/afero"
|
||||
)
|
||||
|
||||
@@ -105,10 +104,25 @@ func NewClient(cfg ClientConfig) *Client {
|
||||
noVendor, _ = hglob.GetGlob(hglob.NormalizePath(cfg.ModuleConfig.NoVendor))
|
||||
}
|
||||
|
||||
var throttleSince time.Time
|
||||
throttle := func(f func()) {
|
||||
if throttleSince.IsZero() {
|
||||
throttleSince = time.Now()
|
||||
f()
|
||||
return
|
||||
}
|
||||
if time.Since(throttleSince) < 6*time.Second {
|
||||
return
|
||||
}
|
||||
throttleSince = time.Now()
|
||||
f()
|
||||
}
|
||||
|
||||
return &Client{
|
||||
fs: fs,
|
||||
ccfg: cfg,
|
||||
logger: logger,
|
||||
throttle: throttle,
|
||||
noVendor: noVendor,
|
||||
moduleConfig: mcfg,
|
||||
environ: env,
|
||||
@@ -118,8 +132,9 @@ func NewClient(cfg ClientConfig) *Client {
|
||||
|
||||
// Client contains most of the API provided by this package.
|
||||
type Client struct {
|
||||
fs afero.Fs
|
||||
logger loggers.Logger
|
||||
fs afero.Fs
|
||||
logger loggers.Logger
|
||||
throttle func(f func())
|
||||
|
||||
noVendor glob.Glob
|
||||
|
||||
@@ -199,7 +214,7 @@ func (c *Client) Vendor() error {
|
||||
if err := c.rmVendorDir(vendorDir); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := c.fs.MkdirAll(vendorDir, 0755); err != nil {
|
||||
if err := c.fs.MkdirAll(vendorDir, 0o755); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -260,7 +275,7 @@ func (c *Client) Vendor() error {
|
||||
} else {
|
||||
targetDir := filepath.Dir(targetFilename)
|
||||
|
||||
if err := c.fs.MkdirAll(targetDir, 0755); err != nil {
|
||||
if err := c.fs.MkdirAll(targetDir, 0o755); err != nil {
|
||||
return fmt.Errorf("failed to make target dir: %w", err)
|
||||
}
|
||||
|
||||
@@ -303,7 +318,7 @@ func (c *Client) Vendor() error {
|
||||
}
|
||||
|
||||
if modulesContent.Len() > 0 {
|
||||
if err := afero.WriteFile(c.fs, filepath.Join(vendorDir, vendorModulesFilename), modulesContent.Bytes(), 0666); err != nil {
|
||||
if err := afero.WriteFile(c.fs, filepath.Join(vendorDir, vendorModulesFilename), modulesContent.Bytes(), 0o666); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -558,7 +573,7 @@ func (c *Client) rewriteGoMod(name string, isGoMod map[string]bool) error {
|
||||
return err
|
||||
}
|
||||
if data != nil {
|
||||
if err := afero.WriteFile(c.fs, filepath.Join(c.ccfg.WorkingDir, name), data, 0666); err != nil {
|
||||
if err := afero.WriteFile(c.fs, filepath.Join(c.ccfg.WorkingDir, name), data, 0o666); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -636,7 +651,8 @@ func (c *Client) rmVendorDir(vendorDir string) error {
|
||||
func (c *Client) runGo(
|
||||
ctx context.Context,
|
||||
stdout io.Writer,
|
||||
args ...string) error {
|
||||
args ...string,
|
||||
) error {
|
||||
if c.goBinaryStatus != 0 {
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user