| package path |
| |
| import ( |
| "os" |
| "path/filepath" |
| |
| "github.com/Masterminds/glide/godep/strip" |
| "github.com/Masterminds/glide/msg" |
| ) |
| |
| // StripVcs removes VCS metadata (.git, .hg, .bzr, .svn) from the vendor/ |
| // directory. |
| func StripVcs() error { |
| if _, err := os.Stat(VendorDir); err != nil { |
| if os.IsNotExist(err) { |
| msg.Debug("Vendor directory does not exist.") |
| } |
| |
| return err |
| } |
| return filepath.Walk(VendorDir, stripHandler) |
| } |
| |
| func stripHandler(path string, info os.FileInfo, err error) error { |
| |
| name := info.Name() |
| if name == ".git" || name == ".bzr" || name == ".svn" || name == ".hg" { |
| if _, err := os.Stat(path); err == nil { |
| if info.IsDir() { |
| msg.Info("Removing: %s", path) |
| return os.RemoveAll(path) |
| } |
| |
| msg.Debug("%s is not a directory. Skipping removal", path) |
| return nil |
| } |
| } |
| return nil |
| } |
| |
| // StripVendor removes nested vendor and Godeps/_workspace/ directories. |
| func StripVendor() error { |
| if _, err := os.Stat(VendorDir); err != nil { |
| if os.IsNotExist(err) { |
| msg.Debug("Vendor directory does not exist.") |
| } |
| |
| return err |
| } |
| |
| err := filepath.Walk(VendorDir, stripVendorHandler) |
| if err != nil { |
| return err |
| } |
| |
| err = strip.GodepWorkspace(VendorDir) |
| |
| return err |
| } |
| |
| func stripVendorHandler(path string, info os.FileInfo, err error) error { |
| // Skip the base vendor directory |
| if path == VendorDir { |
| return nil |
| } |
| |
| name := info.Name() |
| if name == "vendor" { |
| if _, err := os.Stat(path); err == nil { |
| if info.IsDir() { |
| msg.Info("Removing: %s", path) |
| return os.RemoveAll(path) |
| } |
| |
| msg.Debug("%s is not a directory. Skipping removal", path) |
| return nil |
| } |
| } |
| return nil |
| } |