@@ -411,9 +411,7 @@ func (proj *Project) UpgradeIf(
411411 return inst .Upgrade (specifiedRepoList , force , ask )
412412}
413413
414- func (proj * Project ) InfoIf (predicate func (r * repo.Repo ) bool ,
415- remote bool ) error {
416-
414+ func (proj * Project ) Info (remote bool , external bool ) error {
417415 if remote {
418416 // Make sure we have an up to date copy of all `repository.yml` files.
419417 if err := proj .downloadRepositoryYmlFiles (); err != nil {
@@ -422,15 +420,39 @@ func (proj *Project) InfoIf(predicate func(r *repo.Repo) bool,
422420 }
423421
424422 // Determine which repos the user wants info about.
425- repoList := proj .SelectRepos (predicate )
423+ predicate := func (r * repo.Repo ) bool { return true }
424+ internalRepos := proj .SelectRepos (predicate )
425+
426+ if ! remote && external {
427+ proj .GetPkgRepos ()
428+ }
429+
430+ predicate = func (r * repo.Repo ) bool {
431+ for _ , intRepo := range internalRepos {
432+ if intRepo .Name () == r .Name () {
433+ return false
434+ }
435+ }
436+ return true
437+ }
438+ // This should be empty slice if remote is true
439+ externalRepos := proj .SelectRepos (predicate )
426440
427441 // Ignore errors. We will deal with bad repos individually when we display
428442 // info about them.
429443 inst , _ := install .NewInstaller (proj .repos , proj .rootRepoReqs )
430- if err := inst .Info (repoList , remote ); err != nil {
444+ util .StatusMessage (util .VERBOSITY_DEFAULT , "Internal repository info:\n " )
445+ if err := inst .Info (internalRepos , remote ); err != nil {
431446 return err
432447 }
433448
449+ if ! remote && external {
450+ util .StatusMessage (util .VERBOSITY_DEFAULT , "External repository info:\n " )
451+ if err := inst .Info (externalRepos , remote ); err != nil {
452+ return err
453+ }
454+ }
455+
434456 return nil
435457}
436458
0 commit comments