Merge pull request #540 from Masterminds/fix/529
Fixed #529: --delete flag deletes and redownloads transitive deps
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10f8d68..a712d6d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@
This skips unnecessary network requests (thanks @hori-ryota)
## Fixed
+- #529: --delete flag deleted and re-downloaded transitive dependencies
- #535: Resolve vendor directory symlinks (thanks @Fugiman)
# Release 0.11.1 (2016-07-21)
diff --git a/action/install.go b/action/install.go
index ee91401..b1566a2 100644
--- a/action/install.go
+++ b/action/install.go
@@ -42,14 +42,6 @@
msg.Warn("Lock file may be out of date. Hash check of YAML failed. You may need to run 'update'")
}
- // Delete unused packages
- if installer.DeleteUnused {
- // It's unclear whether this should operate off of the lock, or off
- // of the glide.yaml file. I'd think that doing this based on the
- // lock would be much more reliable.
- dependency.DeleteUnused(conf)
- }
-
// Install
newConf, err := installer.Install(lock, conf)
if err != nil {
@@ -63,6 +55,13 @@
msg.Err("Failed to set references: %s (Skip to cleanup)", err)
}
+ // Delete unused packages
+ if installer.DeleteUnused {
+ // newConf is calculated based on the lock file so it should be
+ // accurate to the project list.
+ dependency.DeleteUnused(newConf)
+ }
+
// VendoredCleanup. This should ONLY be run if UpdateVendored was specified.
// When stripping VCS happens this will happen as well. No need for double
// effort.
diff --git a/action/update.go b/action/update.go
index fdd90ad..bdd3c62 100644
--- a/action/update.go
+++ b/action/update.go
@@ -24,11 +24,6 @@
EnsureVendorDir()
conf := EnsureConfig()
- // Delete unused packages
- if installer.DeleteUnused {
- dependency.DeleteUnused(conf)
- }
-
// Try to check out the initial dependencies.
if err := installer.Checkout(conf); err != nil {
msg.Die("Failed to do initial checkout of config: %s", err)
@@ -59,6 +54,12 @@
msg.Err("Failed to set references: %s (Skip to cleanup)", err)
}
}
+
+ // Delete unused packages
+ if installer.DeleteUnused {
+ dependency.DeleteUnused(confcopy)
+ }
+
// Vendored cleanup
// VendoredCleanup. This should ONLY be run if UpdateVendored was specified.
// When stripping VCS happens this will happen as well. No need for double
diff --git a/dependency/delete.go b/dependency/delete.go
index 39a6367..6456370 100644
--- a/dependency/delete.go
+++ b/dependency/delete.go
@@ -28,6 +28,9 @@
for _, dep := range conf.Imports {
pkgList = append(pkgList, dep.Name)
}
+ for _, dep := range conf.DevImports {
+ pkgList = append(pkgList, dep.Name)
+ }
var searchPath string
var markForDelete []string