shithub: hugo

Download patch

ref: 760a87a45a0a3e6a581851e5cf4fe440e9a8c655
parent: 3d3fa5c3fe5ee0c9df59d682ee0acaba71a06ae1
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Tue Mar 3 06:00:45 EST 2020

commands: Add --all flag to hugo mod clean

--- a/commands/mod.go
+++ b/commands/mod.go
@@ -18,6 +18,7 @@
 	"fmt"
 	"os"
 	"path/filepath"
+	"regexp"
 
 	"github.com/gohugoio/hugo/modules"
 	"github.com/spf13/cobra"
@@ -49,8 +50,11 @@
 	return verifyCmd
 }
 
+var moduleNotFoundRe = regexp.MustCompile("module.*not found")
+
 func (c *modCmd) newCleanCmd() *cobra.Command {
 	var pattern string
+	var all bool
 	cmd := &cobra.Command{
 		Use:   "clean",
 		Short: "Delete the Hugo Module cache for the current project.",
@@ -62,6 +66,16 @@
  
 `,
 		RunE: func(cmd *cobra.Command, args []string) error {
+			if all {
+				com, err := c.initConfig(false)
+
+				if err != nil && !moduleNotFoundRe.MatchString(err.Error()) {
+					return err
+				}
+
+				_, err = com.hugo().FileCaches.ModulesCache().Prune(true)
+				return err
+			}
 			return c.withModsClient(true, func(c *modules.Client) error {
 				return c.Clean(pattern)
 			})
@@ -69,6 +83,7 @@
 	}
 
 	cmd.Flags().StringVarP(&pattern, "pattern", "", "", `pattern matching module paths to clean (all if not set), e.g. "**hugo*"`)
+	cmd.Flags().BoolVarP(&all, "all", "", false, "clean entire module cache")
 
 	return cmd
 }