15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def List(remote_manifest, local_manifest, display_revisions): 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) any_bundles_need_update = False 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print 'Bundles:' 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print ' I: installed\n *: update available\n' 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for bundle in remote_manifest.GetBundles(): 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) local_bundle = local_manifest.GetBundle(bundle.name) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) needs_update = local_bundle and local_manifest.BundleNeedsUpdate(bundle) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if needs_update: 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) any_bundles_need_update = True 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _PrintBundle(local_bundle, bundle, needs_update, display_revisions) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if not any_bundles_need_update: 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print '\nAll installed bundles are up-to-date.' 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) local_only_bundles = set([b.name for b in local_manifest.GetBundles()]) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) local_only_bundles -= set([b.name for b in remote_manifest.GetBundles()]) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if local_only_bundles: 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print '\nBundles installed locally that are not available remotely:' 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for bundle_name in local_only_bundles: 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) local_bundle = local_manifest.GetBundle(bundle_name) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) _PrintBundle(local_bundle, None, False, display_revisions) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def _PrintBundle(local_bundle, bundle, needs_update, display_revisions): 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) installed = local_bundle is not None 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) # If bundle is None, there is no longer a remote bundle with this name. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if bundle is None: 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bundle = local_bundle 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if display_revisions: 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if needs_update: 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision = ' (r%s -> r%s)' % (local_bundle.revision, bundle.revision) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else: 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision = ' (r%s)' % (bundle.revision,) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else: 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision = '' 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print (' %s%s %s (%s)%s' % ( 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'I' if installed else ' ', 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '*' if needs_update else ' ', 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bundle.name, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bundle.stability, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) revision)) 49