From 53ad1d5c45533ec851f1d52c0536790100d310bf Mon Sep 17 00:00:00 2001
From: Seblu <sebastien.luttringer@smartjog.com>
Date: Fri, 1 Jul 2011 11:44:24 +0200
Subject: [PATCH] install command now use common loading repositories

---
 bin/is                       | 38 +++++++++++++++++-------------------
 installsystems/repository.py |  2 +-
 2 files changed, 19 insertions(+), 21 deletions(-)

diff --git a/bin/is b/bin/is
index 5e95d0c..c099e19 100755
--- a/bin/is
+++ b/bin/is
@@ -38,7 +38,7 @@ def load_repositories(args):
     debug("Loaded repositories: %s" % [ x.name for x in repos ])
     return repos
 
-def c_init_image(args):
+def c_init_image(parser, args, config):
     '''
     Create a new source image
     '''
@@ -47,7 +47,7 @@ def c_init_image(args):
     except Exception as e:
         error("init image failed: %s." % e)
 
-def c_init_repo(args):
+def c_init_repo(parser, args, config):
     '''
     Create a empty repository
     '''
@@ -60,7 +60,7 @@ def c_init_repo(args):
     except Exception as e:
         raise Exception("init repo failed: %s" % e)
 
-def c_build(args):
+def c_build(parser, args, config):
     '''
     Build an image source
     '''
@@ -78,7 +78,7 @@ def c_build(args):
     except Exception as e:
         error("build failed: %s." % e)
 
-def c_add(args):
+def c_add(parser, args, config):
     '''
     Add an image package into a repository
     '''
@@ -92,7 +92,7 @@ def c_add(args):
     except Exception as e:
         raise Exception("add failed: %s" % e)
 
-def c_del(args):
+def c_del(parser, args, config):
     '''
     Remove an image package from a repository
     '''
@@ -105,7 +105,7 @@ def c_del(args):
     except Exception as e:
         raise Exception("del failed: %s" % e)
 
-def c_install(args):
+def c_install(parser, args, config):
     '''
     Install an image
     '''
@@ -118,13 +118,11 @@ def c_install(args):
             config.cache = None
         # init repo cache object
         repoman = RepositoryManager(config.cache, timeout=args.timeout)
-        # register command line repositories (order matter)
-        for rpath in args.repo_path:
-            repoman.register(RepositoryConfig(None, path=rpath))
-        # register config repositories
-        for r_config in args.repo_config:
-            for r_repo in RepoConfigFile(r_config).repos:
-                repoman.register(r_repo)
+        # load repositories
+        repos_config = load_repositories(args)
+        # register repositories (order matter)
+        for repo_conf in repos_config:
+            repoman.register(repo_conf)
         # get image package
         pkg = repoman.get(args.image, args.image_version)
     else:
@@ -138,7 +136,7 @@ def c_install(args):
     pkg.run_parser(parser=args.subparser)
     # call parser again, with extended attributes
     arrow("Parsing arguments")
-    args = args.parser.parse_args(namespace=args)
+    args = parser.parse_args(namespace=args)
     # run setup scripts
     pkg.run_setup(namespace=args)
     # compute building time
@@ -146,19 +144,19 @@ def c_install(args):
     dt = int(t1 - t0)
     arrow("Install time: %s" % datetime.timedelta(seconds=dt))
 
-def c_search(args):
+def c_search(parser, args, config):
     '''
     Search in repository
     '''
     raise NotImplementedError("Not yet implemented")
 
-def c_get(args):
+def c_get(parser, args, config):
     '''
     Get a remove image in current directory
     '''
     raise NotImplementedError("Not yet implemented")
 
-def c_clean(args):
+def c_clean(parser, args, config):
     '''
     Clean a repository
     '''
@@ -232,7 +230,7 @@ p_install.add_argument("--no-cache", action="store_true", default=False,
 p_install.add_argument("-v", "--image-version", type=int, default=None,
                        help="image version")
 p_install.add_argument("image", help="image to install (path or name)")
-p_install.set_defaults(func=c_install, parser=p_main, subparser=p_install)
+p_install.set_defaults(func=c_install, subparser=p_install)
 
 # get command parser
 p_get = subparsers.add_parser("get", help=c_get.__doc__.lower())
@@ -258,10 +256,10 @@ try:
     # set debug and quiet mode after merge
     installsystems.debug = args.debug
     installsystems.quiet = args.quiet
-    if not hasattr(args, "parser"):
+    if args.func is not c_install:
         args = p_main.parse_args(namespace=args)
     # let's go
-    args.func(args)
+    args.func(p_main, args, config)
 except Exception as e:
     p_main.print_usage()
     error(e)
diff --git a/installsystems/repository.py b/installsystems/repository.py
index 1322e8f..46c79e1 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -397,7 +397,7 @@ class RepositoryManager(object):
         # delete temporary files (used by db)
         for f in self.tempfiles:
             try:
-                debug("Removing %s" % f)
+                debug("Removing temporaty db file %s" % f)
                 os.unlink(f)
             except OSError:
                 pass
-- 
GitLab