Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

Commit d3bf178

Browse files
committed
First bits of -update path
1 parent aa0dee8 commit d3bf178

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

cmd/dep/ensure.go

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -172,23 +172,13 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error {
172172
return errors.Wrap(err, "ensure ListPackage for project")
173173
}
174174

175-
var fail error
176175
if cmd.add {
177176
return cmd.runAdd(ctx, args, p, sm, params)
178177
} else if cmd.update {
179178
return cmd.runUpdate(ctx, args, p, sm, params)
180179
}
181180
return cmd.runDefault(ctx, args, p, sm, params)
182181

183-
if cmd.update {
184-
applyUpdateArgs(args, &params)
185-
} else {
186-
err := applyEnsureArgs(args, cmd.overrides, p, sm, &params)
187-
if err != nil {
188-
return err
189-
}
190-
}
191-
192182
solver, err := gps.Prepare(params, sm)
193183
if err != nil {
194184
return errors.Wrap(err, "ensure Prepare")
@@ -295,13 +285,11 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project
295285
return nil
296286
}
297287

298-
func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error {
299-
}
300-
301288
func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error {
302-
}
289+
if p.Lock == nil {
290+
return errors.New("%s does not exist. nothing to do, as -update works by updating the values in %s.", dep.LockName, dep.LockName)
291+
}
303292

304-
func applyUpdateArgs(args []string, params *gps.SolveParameters) {
305293
// When -update is specified without args, allow every project to change versions, regardless of the lock file
306294
if len(args) == 0 {
307295
params.ChangeAll = true
@@ -310,12 +298,30 @@ func applyUpdateArgs(args []string, params *gps.SolveParameters) {
310298

311299
// Allow any of specified project versions to change, regardless of the lock file
312300
for _, arg := range args {
301+
// Ensure the provided path has a deducible project root
302+
// TODO(sdboyer) do these concurrently
303+
pc, err := getProjectConstraint(arg, sm)
304+
if err != nil {
305+
// TODO(sdboyer) return all errors, not just the first one we encounter
306+
// TODO(sdboyer) ensure these errors are contextualized in a
307+
// sensible way for -update
308+
return err
309+
}
310+
311+
if !gps.IsAny(pc.Constraint) {
312+
// TODO(sdboyer) constraints should be allowed to allow solves that
313+
// target particular versions while remaining within declared constraints
314+
return errors.Errorf("-update operates according to constraints declared in %s, not CLI arguments.\nYou passed in %s for %s", dep.ManifestName, pc.Constraint, pc.Ident.ProjectRoot)
315+
}
316+
313317
params.ToChange = append(params.ToChange, gps.ProjectRoot(arg))
314318
}
315319
}
316320

317-
func applyEnsureArgs(args []string, overrides stringSlice, p *dep.Project, sm *gps.SourceMgr, params *gps.SolveParameters) error {
321+
func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error {
322+
}
318323

324+
func applyEnsureArgs(args []string, overrides stringSlice, p *dep.Project, sm *gps.SourceMgr, params *gps.SolveParameters) error {
319325
var errs []error
320326
for _, arg := range args {
321327
pc, err := getProjectConstraint(arg, sm)

0 commit comments

Comments
 (0)