From 0ac3e4558292ea0cd9a038ce39b7f2d92ee8713c Mon Sep 17 00:00:00 2001
From: Seblu <sebastien.luttringer@smartjog.com>
Date: Thu, 25 Aug 2011 10:25:03 +0200
Subject: [PATCH] list now use new syntax spec

---
 bin/is                       | 47 ++++++++----------------------------
 installsystems/repository.py |  9 +++++++
 2 files changed, 19 insertions(+), 37 deletions(-)

diff --git a/bin/is b/bin/is
index 4ebd6b1..5706199 100755
--- a/bin/is
+++ b/bin/is
@@ -197,44 +197,17 @@ def c_list(parser, args):
     List images in repository or image content
     '''
     # List available repositories
-    if len(args.values) == 0:
-        repoman = load_repositories(args)
+    repoman = load_repositories(args)
+    if len(args.object) == 0:
         arrow("Repositories")
         repoman.show(verbose=args.detail)
-        return
-    # list direct image or reposity content
-    elif len(args.values) == 1:
-        # list image file content
-        if (istools.isfile(args.values[0]) and os.path.isfile(args.values[0])):
-            pkg = PackageImage(args.values[0])
-            arrow("Image %s v%s" % (pkg.name, pkg.version))
-            pkg.show(verbose=args.detail)
-        # list repository content
-        else:
-            args.repo_filter = args.values[0]
-            repoman = load_repositories(args)
-            for repo in repoman:
-                arrow("Image in %s" % repo.config.name)
-                repo.show(args.detail)
-        return
-    # list last image version
-    elif len(args.values) == 2:
-        args.repo_filter = args.values[0]
-        args.image = args.values[1]
-        args.image_version = None
-    # list specific image version
-    elif len(args.values) == 3:
-        args.repo_filter = args.values[0]
-        args.image = args.values[1]
-        args.image_version = args.values[2]
     else:
-        args.subparser.print_usage()
-        exit(1)
-    # display content of image accross a repositories
-    repoman = load_repositories(args)
-    pkg = repoman.get(args.image, args.image_version)
-    arrow("Image %s v%s" % (pkg.name, pkg.version))
-    pkg.show(verbose=args.detail)
+        for o in args.object:
+            if o in repoman:
+                repoman[o].show(verbose=args.detail)
+            else:
+                img, repo = select_image(o, repoman)
+                img.show(verbose=args.detail)
 
 def c_move(parser, args):
     '''
@@ -376,8 +349,8 @@ p_install.set_defaults(func=c_install, subparser=p_install)
 p_list = subparsers.add_parser("list", help=c_list.__doc__.lower())
 p_list.add_argument("-l", action="store_true", dest="detail",
                     default=False, help="detailled list output")
-p_list.add_argument("values", nargs="*",
-                    help="image or repositories to list")
+p_list.add_argument("object", nargs="*",
+                    help="object can be an image or repositories")
 p_list.set_defaults(func=c_list, subparser=p_list)
 
 # move command parser
diff --git a/installsystems/repository.py b/installsystems/repository.py
index 3e11c5f..04b8f4a 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -518,6 +518,15 @@ class RepositoryManager(object):
         else:
             raise TypeError
 
+    def __contains__(self, key):
+        '''
+        Check if a key is a repository name
+        '''
+        for r in self.repos:
+            if r.config.name == key:
+                return True
+        return False
+
     def register(self, config):
         '''
         Register a repository from its config
-- 
GitLab