|  | package cmd | 
|  |  | 
|  | import ( | 
|  | "os" | 
|  | "path" | 
|  |  | 
|  | "github.com/Masterminds/cookoo" | 
|  | "github.com/Masterminds/glide/cfg" | 
|  | ) | 
|  |  | 
|  | // If we are updating the vendored dependencies. That is those stored in the | 
|  | // local project VCS. | 
|  | var updatingVendored = false | 
|  |  | 
|  | // VendoredSetup is a command that does the setup for vendored directories. | 
|  | // If enabled (via update) it marks vendored directories that are being updated | 
|  | // and removed the old code. This should be a prefix to UpdateImports and | 
|  | // VendoredCleanUp should be a suffix to UpdateImports. | 
|  | func VendoredSetup(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) { | 
|  | update := p.Get("update", false).(bool) | 
|  | conf := p.Get("conf", nil).(*cfg.Config) | 
|  |  | 
|  | updatingVendored = update | 
|  |  | 
|  | return conf, nil | 
|  | } | 
|  |  | 
|  | // VendoredCleanUp is a command that cleans up vendored codebases after an update. | 
|  | // If enabled (via update) it removes the VCS info from updated vendored | 
|  | // packages. This should be a suffix to UpdateImports and  VendoredSetup should | 
|  | // be a prefix to UpdateImports. | 
|  | func VendoredCleanUp(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) { | 
|  | update := p.Get("update", true).(bool) | 
|  | if update != true { | 
|  | return false, nil | 
|  | } | 
|  | conf := p.Get("conf", nil).(*cfg.Config) | 
|  |  | 
|  | vend, err := VendorPath(c) | 
|  | if err != nil { | 
|  | return false, err | 
|  | } | 
|  |  | 
|  | for _, dep := range conf.Imports { | 
|  | if dep.UpdateAsVendored == true { | 
|  | Info("Cleaning up vendored package %s\n", dep.Name) | 
|  |  | 
|  | // Remove the VCS directory | 
|  | cwd := path.Join(vend, dep.Name) | 
|  | repo, err := dep.GetRepo(cwd) | 
|  | if err != nil { | 
|  | Error("Error cleaning up %s:%s", dep.Name, err) | 
|  | continue | 
|  | } | 
|  | t := repo.Vcs() | 
|  | err = os.RemoveAll(cwd + string(os.PathSeparator) + "." + string(t)) | 
|  | if err != nil { | 
|  | Error("Error cleaning up VCS dir for %s:%s", dep.Name, err) | 
|  | } | 
|  | } | 
|  |  | 
|  | } | 
|  |  | 
|  | return true, nil | 
|  | } |