Home | History | Annotate | Download | only in command
      1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 def List(remote_manifest, local_manifest, display_revisions):
      6   any_bundles_need_update = False
      7   print 'Bundles:'
      8   print ' I: installed\n *: update available\n'
      9   for bundle in remote_manifest.GetBundles():
     10     local_bundle = local_manifest.GetBundle(bundle.name)
     11     needs_update = local_bundle and local_manifest.BundleNeedsUpdate(bundle)
     12     if needs_update:
     13       any_bundles_need_update = True
     14 
     15     _PrintBundle(local_bundle, bundle, needs_update, display_revisions)
     16 
     17   if not any_bundles_need_update:
     18     print '\nAll installed bundles are up-to-date.'
     19 
     20   local_only_bundles = set([b.name for b in local_manifest.GetBundles()])
     21   local_only_bundles -= set([b.name for b in remote_manifest.GetBundles()])
     22   if local_only_bundles:
     23     print '\nBundles installed locally that are not available remotely:'
     24     for bundle_name in local_only_bundles:
     25       local_bundle = local_manifest.GetBundle(bundle_name)
     26       _PrintBundle(local_bundle, None, False, display_revisions)
     27 
     28 
     29 def _PrintBundle(local_bundle, bundle, needs_update, display_revisions):
     30   installed = local_bundle is not None
     31   # If bundle is None, there is no longer a remote bundle with this name.
     32   if bundle is None:
     33     bundle = local_bundle
     34 
     35   if display_revisions:
     36     if needs_update:
     37       revision = ' (r%s -> r%s)' % (local_bundle.revision, bundle.revision)
     38     else:
     39       revision = ' (r%s)' % (bundle.revision,)
     40   else:
     41     revision = ''
     42 
     43   print ('  %s%s %s (%s)%s' % (
     44     'I' if installed else ' ',
     45     '*' if needs_update else ' ',
     46     bundle.name,
     47     bundle.stability,
     48     revision))
     49