display all rpm debug messages in debug mode
[platform/upstream/mic.git] / mic / pluginbase.py
index 99cd24a..ffdd993 100644 (file)
 # with this program; if not, write to the Free Software Foundation, Inc., 59
 # Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
+import os
+import shutil
 from mic import msger
+from mic.utils import errors
 
 class _Plugin(object):
     class __metaclass__(type):
@@ -24,11 +27,11 @@ class _Plugin(object):
                 cls.plugins = {}
 
             elif 'mic_plugin_type' in attrs:
-                    if attrs['mic_plugin_type'] not in cls.plugins:
-                        cls.plugins[attrs['mic_plugin_type']] = {}
+                if attrs['mic_plugin_type'] not in cls.plugins:
+                    cls.plugins[attrs['mic_plugin_type']] = {}
 
             elif hasattr(cls, 'mic_plugin_type') and 'name' in attrs:
-                    cls.plugins[cls.mic_plugin_type][attrs['name']] = cls
+                cls.plugins[cls.mic_plugin_type][attrs['name']] = cls
 
         def show_plugins(cls):
             for cls in cls.plugins[cls.mic_plugin_type]:
@@ -40,26 +43,49 @@ class _Plugin(object):
 class ImagerPlugin(_Plugin):
     mic_plugin_type = "imager"
 
+    @classmethod
+    def check_image_exists(self, destdir, apacking=None,
+                                          images=(),
+                                          release=None):
+
+        # if it's a packing file, reset images
+        if apacking:
+            images = [apacking]
+
+        # release option will override images
+        if release is not None:
+            images = [os.path.basename(destdir.rstrip('/'))]
+            destdir = os.path.dirname(destdir.rstrip('/'))
+
+        for name in images:
+            if not name:
+                continue
+
+            image = os.path.join(destdir, name)
+            if not os.path.exists(image):
+                continue
+            if msger.ask("Target image/dir: %s already exists, "
+                         "clean up the old files and continue?" % image):
+                if os.path.isdir(image):
+                    for path, dirs, files in os.walk(os.path.abspath(image)):
+                        for fname in files:
+                            fpath = os.path.join(path, fname)
+                            if not fpath.endswith('.log'):
+                                os.remove(fpath)
+                else:
+                    os.unlink(image)
+            else:
+                raise errors.Abort("Canceled")
+
     def do_create(self):
         pass
 
     def do_chroot(self):
         pass
 
-    def do_pack(self):
-        pass
-
-    def do_unpack(self):
-        pass
-
 class BackendPlugin(_Plugin):
     mic_plugin_type="backend"
 
-    # suppress the verbose rpm warnings
-    if msger.get_loglevel() != 'debug':
-        import rpm
-        rpm.setVerbosity(rpm.RPMLOG_ERR)
-
     def addRepository(self):
         pass