@@ -43,6 +43,8 @@ print an extended status output for each dependency of the project.
43
43
Status returns exit code zero if all dependencies are in a "good state".
44
44
`
45
45
46
+ var errFailedUpdate = errors .New ("failed to fetch updates" )
47
+
46
48
func (cmd * statusCommand ) Name () string { return "status" }
47
49
func (cmd * statusCommand ) Args () string { return "[package...]" }
48
50
func (cmd * statusCommand ) ShortHelp () string { return statusShortHelp }
@@ -98,7 +100,7 @@ func (out *tableOutput) BasicLine(bs *BasicStatus) {
98
100
bs .getConsolidatedConstraint (),
99
101
formatVersion (bs .Version ),
100
102
formatVersion (bs .Revision ),
101
- formatVersion ( bs .Latest ),
103
+ bs .getConsolidatedLatest ( ),
102
104
bs .PackageCount ,
103
105
)
104
106
}
@@ -222,6 +224,15 @@ func (cmd *statusCommand) Run(ctx *dep.Ctx, args []string) error {
222
224
223
225
digestMismatch , hasMissingPkgs , err := runStatusAll (ctx , out , p , sm )
224
226
if err != nil {
227
+ // Print the outdated results
228
+ if err == errFailedUpdate {
229
+ ctx .Out .Println (buf .String ())
230
+
231
+ // Print the help when in non-verbose mode
232
+ if ! ctx .Verbose {
233
+ ctx .Out .Println ("Failed to get status of some projects. Run `dep status -v` to see the error messages." )
234
+ }
235
+ }
225
236
return err
226
237
}
227
238
@@ -245,8 +256,8 @@ type rawStatus struct {
245
256
ProjectRoot string
246
257
Constraint string
247
258
Version string
248
- Revision gps. Revision
249
- Latest gps. Version
259
+ Revision string
260
+ Latest string
250
261
PackageCount int
251
262
}
252
263
@@ -261,6 +272,7 @@ type BasicStatus struct {
261
272
Latest gps.Version
262
273
PackageCount int
263
274
hasOverride bool
275
+ hasError bool
264
276
}
265
277
266
278
func (bs * BasicStatus ) getConsolidatedConstraint () string {
@@ -288,13 +300,26 @@ func (bs *BasicStatus) getConsolidatedVersion() string {
288
300
return version
289
301
}
290
302
303
+ func (bs * BasicStatus ) getConsolidatedLatest () string {
304
+ latest := ""
305
+ if bs .Latest != nil {
306
+ latest = formatVersion (bs .Latest )
307
+ }
308
+
309
+ if bs .hasError {
310
+ latest += "unknown"
311
+ }
312
+
313
+ return latest
314
+ }
315
+
291
316
func (bs * BasicStatus ) marshalJSON () * rawStatus {
292
317
return & rawStatus {
293
318
ProjectRoot : bs .ProjectRoot ,
294
319
Constraint : bs .getConsolidatedConstraint (),
295
320
Version : formatVersion (bs .Version ),
296
- Revision : bs .Revision ,
297
- Latest : bs .Latest ,
321
+ Revision : formatVersion ( bs .Revision ) ,
322
+ Latest : bs .getConsolidatedLatest () ,
298
323
PackageCount : bs .PackageCount ,
299
324
}
300
325
}
@@ -390,6 +415,7 @@ func runStatusAll(ctx *dep.Ctx, out outputter, p *dep.Project, sm gps.SourceMana
390
415
ptr , err := sm .ListPackages (proj .Ident (), proj .Version ())
391
416
392
417
if err != nil {
418
+ bs .hasError = true
393
419
errorCh <- err
394
420
}
395
421
@@ -445,6 +471,11 @@ func runStatusAll(ctx *dep.Ctx, out outputter, p *dep.Project, sm gps.SourceMana
445
471
break
446
472
}
447
473
}
474
+ } else {
475
+ // Failed to fetch version list (could happen due to
476
+ // network issue)
477
+ bs .hasError = true
478
+ errorCh <- err
448
479
}
449
480
}
450
481
@@ -458,11 +489,16 @@ func runStatusAll(ctx *dep.Ctx, out outputter, p *dep.Project, sm gps.SourceMana
458
489
close (errorCh )
459
490
logger .Println ()
460
491
492
+ var updateError error
493
+
461
494
if len (errorCh ) > 0 {
462
- for err := range errorCh {
463
- ctx .Err .Println (err .Error ())
495
+ updateError = errFailedUpdate
496
+ if ctx .Verbose {
497
+ for err := range errorCh {
498
+ ctx .Err .Println (err .Error ())
499
+ }
500
+ ctx .Err .Println ()
464
501
}
465
- ctx .Err .Println ()
466
502
}
467
503
468
504
// A map of ProjectRoot and *BasicStatus. This is used in maintain the
@@ -480,7 +516,7 @@ func runStatusAll(ctx *dep.Ctx, out outputter, p *dep.Project, sm gps.SourceMana
480
516
481
517
out .BasicFooter ()
482
518
483
- return digestMismatch , hasMissingPkgs , nil
519
+ return digestMismatch , hasMissingPkgs , updateError
484
520
}
485
521
486
522
// Hash digest mismatch may indicate that some deps are no longer
0 commit comments