[jhbuild] info: add a --installed option



commit c768710fc48718cbcaf45f0a308705ccef2e6136
Author: Sebastian Geiger <sbastig gmx net>
Date:   Sun Nov 22 01:31:12 2015 +0100

    info: add a --installed option
    
    This option filters the output such that only installed
    modules are printed.

 jhbuild/commands/info.py |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)
---
diff --git a/jhbuild/commands/info.py b/jhbuild/commands/info.py
index f11d2b0..f52b922 100644
--- a/jhbuild/commands/info.py
+++ b/jhbuild/commands/info.py
@@ -20,6 +20,8 @@
 import sys
 import time
 
+from optparse import make_option
+
 import jhbuild.moduleset
 import jhbuild.frontends
 from jhbuild.errors import FatalError
@@ -38,21 +40,45 @@ class cmd_info(Command):
     name = 'info'
     usage_args = N_('[ modules ... ]')
 
+    def __init__(self):
+        Command.__init__(self, [
+            make_option('--installed',
+                        action='store_true', dest='installed', default=False,
+                        help=_('only display information for installed modules. '
+                               'This will not list system dependencies. If one or more '
+                               'module names are specified and at least one module is '
+                               'not installed, then the command will return 1.'))
+            ])
 
     def run(self, config, options, args, help=None):
         module_set = jhbuild.moduleset.load(config)
         packagedb = module_set.packagedb
 
         if args:
+            # module names present
+            all_installed = True
             for modname in args:
                 try:
                     module = module_set.get_module(modname, ignore_case = True)
                 except KeyError:
                     raise FatalError(_('unknown module %s') % modname)
-                self.show_info(module, packagedb, module_set)
+                package_entry = packagedb.get(module.name)
+                installed = package_entry is not None
+                all_installed = all_installed and installed
+                if (options.installed and installed) or not options.installed:
+                    self.show_info(module, packagedb, module_set)
+            if options.installed and not all_installed:
+                return 1
         else:
+            # no module names given
             for module in module_set.modules.values():
-                self.show_info(module, packagedb, module_set)
+                package_entry = packagedb.get(module.name)
+                if options.installed:
+                    if package_entry is not None:
+                        self.show_info(module, packagedb, module_set)
+                else:
+                    # no installed option selected, simply show all modules
+                    self.show_info(module, packagedb, module_set)
 
     def show_info(self, module, packagedb, module_set):
         package_entry = packagedb.get(module.name)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]