Added command to clear glide cache
diff --git a/action/cache.go b/action/cache.go new file mode 100644 index 0000000..9896f21 --- /dev/null +++ b/action/cache.go
@@ -0,0 +1,29 @@ +package action + +import ( + "os" + + "github.com/Masterminds/glide/cache" + "github.com/Masterminds/glide/msg" +) + +// CacheClear clears the Glide cache +func CacheClear() { + l, err := cache.Location() + if err != nil { + msg.Die("Unable to clear the cache: %s", err) + } + + err = os.RemoveAll(l) + if err != nil { + msg.Die("Unable to clear the cache: %s", err) + } + + cache.SetupReset() + err = cache.Setup() + if err != nil { + msg.Die("Unable to clear the cache: %s", err) + } + + msg.Info("Glide cache has been cleared.") +}
diff --git a/cache/cache.go b/cache/cache.go index 5d6a49d..55b059a 100644 --- a/cache/cache.go +++ b/cache/cache.go
@@ -27,7 +27,8 @@ var setupMutex sync.Mutex -func setup() error { +// Setup creates the cache location. +func Setup() error { setupMutex.Lock() defer setupMutex.Unlock() @@ -52,10 +53,16 @@ return nil } +// SetupReset resets if setup has been completed. The next time setup is run +// it will attempt a full setup. +func SetupReset() { + isSetup = false +} + // Location returns the location of the cache. func Location() (string, error) { p := filepath.Join(gpath.Home(), "cache") - err := setup() + err := Setup() return p, err }
diff --git a/glide.go b/glide.go index 2f75f07..a9f43ea 100644 --- a/glide.go +++ b/glide.go
@@ -639,6 +639,14 @@ }, }, { + Name: "cache-clear", + ShortName: "cc", + Usage: "Clears the Glide cache.", + Action: func(c *cli.Context) { + action.CacheClear() + }, + }, + { Name: "about", Usage: "Learn about Glide", Action: func(c *cli.Context) {