Change update to use safe groupwriter
diff --git a/action/update.go b/action/update.go index 76f40a4..5a13068 100644 --- a/action/update.go +++ b/action/update.go
@@ -1,11 +1,9 @@ package action import ( - "encoding/hex" "log" "os" "path/filepath" - "time" "github.com/Masterminds/glide/cfg" "github.com/Masterminds/glide/dependency" @@ -85,59 +83,17 @@ return } - err = writeVendor(vend, r, sm, sv) + gw := safeGroupWriter{ + lock: args.L.(*cfg.Lockfile), + resultLock: r, + sm: sm, + vendor: vend, + stripVendor: sv, + } + + err = gw.writeAllSafe() if err != nil { msg.Err(err.Error()) return } - - // Create and write out a new lock file from the result - lf := &cfg.Lockfile{ - Hash: hex.EncodeToString(r.InputHash()), - Updated: time.Now(), - } - - for _, p := range r.Projects() { - pi := p.Ident() - l := &cfg.Lock{ - Name: string(pi.LocalName), - VcsType: "", // TODO allow this to be extracted from sm - } - - if l.Name != pi.NetworkName && pi.NetworkName != "" { - l.Repository = pi.NetworkName - } - - v := p.Version() - if pv, ok := v.(vsolver.PairedVersion); ok { - l.Version = pv.Underlying().String() - } else { - l.Version = v.String() - } - - lf.Imports = append(lf.Imports, l) - } - - wl := true - if args.L != nil { - f1, err := args.L.(*cfg.Lockfile).Fingerprint() - f2, err2 := lf.Fingerprint() - if err == nil && err2 == nil && f1 == f2 { - wl = false - } - } - - if wl { - if err := lf.WriteFile(filepath.Join(base, gpath.LockFile)); err != nil { - msg.Err("Could not write lock file to %s: %s", base, err) - return - } - } else { - msg.Info("Versions did not change. Skipping glide.lock update.") - } - - err = writeVendor(vend, r, sm, sv) - if err != nil { - msg.Err(err.Error()) - } }