initial import code into git
[platform/upstream/mic.git] / micng / utils / pkgmanagers / __init__.py
1 #!/usr/bin/python
2
3 import os
4 from micng.utils.errors import *
5
6 class pkgManager:
7     def __init__(self):
8         self.managers = {}
9         self.default_pkg_manager = None
10
11     def register_pkg_manager(self, name, manager):
12 #        print "Registering package manager: %s" % name
13         if not self.managers.has_key(name):
14             self.managers[name] = manager
15         
16     def unregister_pkg_manager(self, name):
17         if self.managers.has_key(name):
18             del self.managers[name]
19
20     def set_default_pkg_manager(self, name):
21         if self.managers.has_key(name):
22             self.default_pkg_manager = self.managers[name]
23             print "Use package manager %s" % name
24
25     def get_default_pkg_manager(self):
26         if self.default_pkg_manager:
27             return self.default_pkg_manager
28         else:
29             if self.managers.has_key("zypp"):
30                 print "Use package manager zypp"
31                 return self.managers["zypp"]
32             elif self.managers.has_key("yum"):
33                 print "Use package manager yum"
34                 return self.managers["yum"]
35             else:
36                 keys = self.managers.keys()
37                 if keys:
38                     print "Use package manager %s" % keys[0]
39                     return self.managers[keys[0]]
40                 else:
41                     return None
42
43     def load_pkg_managers(self):
44         mydir = os.path.dirname(os.path.realpath(__file__))
45         for file in os.listdir(mydir):
46             if os.path.isfile(mydir + "/" + file) and file.endswith(".py") and file != "__init__.py":
47                 pkgmgrmod = file[:file.rfind(".py")]
48                 try:
49                     exec("import micng.utils.pkgmanagers.%s as %s " % (pkgmgrmod, pkgmgrmod))
50                     exec("pkgmgr = %s._pkgmgr" % pkgmgrmod)
51                     self.register_pkg_manager(pkgmgr[0], pkgmgr[1])
52                 except:
53                     continue
54         if not self.managers.keys():
55             raise CreatorError("No packag manager available")