Vendored packages were failing to update. Fixed.
diff --git a/cmd/get_imports.go b/cmd/get_imports.go
index a573aad..050a9d2 100644
--- a/cmd/get_imports.go
+++ b/cmd/get_imports.go
@@ -500,9 +500,30 @@
return err
}
_, err = v.DetectVcsFromFS(dest)
- if empty == false && err == v.ErrCannotDetectVCS {
+ if updatingVendored == false && empty == false && err == v.ErrCannotDetectVCS {
Warn("%s appears to be a vendored package. Unable to update. Consider the '--update-vendored' flag.\n", dep.Name)
} else {
+
+ if updatingVendored == true && empty == false && err == v.ErrCannotDetectVCS {
+ // A vendored package, no repo, and updating the vendored packages
+ // has been opted into.
+ Info("%s is a vendored package. Updating.", dep.Name)
+ err = os.RemoveAll(dest)
+ if err != nil {
+ Error("Unable to update vendored dependency %s.\n", dep.Name)
+ return err
+ } else {
+ dep.UpdateAsVendored = true
+ }
+
+ if err = VcsGet(dep, dest, home, cache, cacheGopath, useGopath); err != nil {
+ Warn("Unable to checkout %s\n", dep.Name)
+ return err
+ }
+
+ return nil
+ }
+
repo, err := dep.GetRepo(dest)
// Tried to checkout a repo to a path that does not work. Either the
@@ -529,12 +550,10 @@
}
} else if err != nil {
return err
+ } else if repo.IsDirty() {
+ return fmt.Errorf("%s contains uncommited changes. Skipping update", dep.Name)
} else {
- if repo.IsDirty() {
- return fmt.Errorf("%s contains uncommited changes. Skipping update.", dep.Name)
- }
-
// Check if the current version is a tag or commit id. If it is
// and that version is already checked out we can skip updating
// which is faster than going out to the Internet to perform
diff --git a/cmd/vendored.go b/cmd/vendored.go
index b0e3f64..5f1f87e 100644
--- a/cmd/vendored.go
+++ b/cmd/vendored.go
@@ -6,49 +6,21 @@
"github.com/Masterminds/cookoo"
"github.com/Masterminds/glide/cfg"
- "github.com/Masterminds/vcs"
)
+// 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", true).(bool)
+ update := p.Get("update", false).(bool)
conf := p.Get("conf", nil).(*cfg.Config)
- if update != true {
- return conf, nil
- }
- vend, err := VendorPath(c)
- if err != nil {
- return conf, err
- }
-
- for _, dep := range conf.Imports {
- cwd := path.Join(vend, dep.Name)
-
- // When the directory is not empty and has no VCS directory it's
- // a vendored files situation.
- empty, err := isDirectoryEmpty(cwd)
- if err != nil {
- Error("Error with the directory %s\n", cwd)
- continue
- }
- _, err = vcs.DetectVcsFromFS(cwd)
- if empty == false && err == vcs.ErrCannotDetectVCS {
- Info("Updating vendored package %s\n", dep.Name)
-
- // Remove old directory. cmd.UpdateImports will retrieve the version
- // and cmd.SetReference will set the version.
- err = os.RemoveAll(cwd)
- if err != nil {
- Error("Unable to update vendored dependency %s.\n", dep.Name)
- } else {
- dep.UpdateAsVendored = true
- }
- }
- }
+ updatingVendored = update
return conf, nil
}
diff --git a/glide.lock b/glide.lock
index 2494ed3..d78601e 100644
--- a/glide.lock
+++ b/glide.lock
@@ -1,10 +1,8 @@
hash: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
-updated: 2015-12-09T10:37:37.177792534-05:00
+updated: 2015-12-10T10:46:38.137326757-05:00
imports:
- name: github.com/codegangsta/cli
version: 0302d3914d2a6ad61404584cdae6e6dbc9c03599
-- name: github.com/Masterminds/convert
- version: a9949121a2e2192ca92fa6dddfeaaa4a4412d955
- name: github.com/Masterminds/cookoo
version: 78aa11ce75e257c51be7ea945edb84cf19c4a6de
repo: git@github.com:Masterminds/cookoo.git