[yum-git] Branch 'yum-3_2_X' - yum/__init__.py

James Antill james at linux.duke.edu
Wed Aug 6 18:12:24 UTC 2008


 yum/__init__.py |   36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

New commits:
commit ce8c22250eb1a1eaca6faa56538c90ca08d55701
Author: James Antill <james at and.org>
Date:   Wed Aug 6 14:12:06 2008 -0400

    Add @group cmd line support to install/update/remove

diff --git a/yum/__init__.py b/yum/__init__.py
index e9869f0..96dcec6 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -2187,7 +2187,34 @@ class YumBase(depsolve.Depsolve):
             slow = next_func(slow)
             if next == slow:
                 return None
+
+    def _at_groupinstall(self, pattern):
+        " Do groupinstall via. leading @ on the cmd line, for install/update."
+        assert pattern[0] == '@'
+        group_string = pattern[1:]
+        tx_return = []
+        for group in self.comps.return_groups(group_string):
+            try:
+                txmbrs = self.selectGroup(group.groupid)
+                tx_return.extend(txmbrs)
+            except yum.Errors.GroupsError:
+                self.logger.critical(_('Warning: Group %s does not exist.'), group_string)
+                continue
+        return tx_return
         
+    def _at_groupremove(self, pattern):
+        " Do groupremove via. leading @ on the cmd line, for remove."
+        assert pattern[0] == '@'
+        group_string = pattern[1:]
+        tx_return = []
+        try:
+            txmbrs = self.groupRemove(group_string)
+        except yum.Errors.GroupsError:
+            self.logger.critical(_('No group named %s exists'), group_string)
+        else:
+            tx_return.extend(txmbrs)
+        return tx_return
+
     def install(self, po=None, **kwargs):
         """try to mark for install the item specified. Uses provided package 
            object, if available. If not it uses the kwargs and gets the best
@@ -2209,6 +2236,9 @@ class YumBase(depsolve.Depsolve):
                 raise Errors.InstallError, _('Nothing specified to install')
 
             if kwargs.has_key('pattern'):
+                if kwargs['pattern'][0] == '@':
+                    return self._at_groupinstall(kwargs['pattern'])
+
                 was_pattern = True
                 pats = [kwargs['pattern']]
                 exactmatch, matched, unmatched = \
@@ -2420,6 +2450,9 @@ class YumBase(depsolve.Depsolve):
                 
                 
         elif kwargs.has_key('pattern'):
+            if kwargs['pattern'][0] == '@':
+                return self._at_groupinstall(kwargs['pattern'])
+
             (e, m, u) = self.rpmdb.matchPackageNames([kwargs['pattern']])
             instpkgs.extend(e)
             instpkgs.extend(m)
@@ -2558,6 +2591,9 @@ class YumBase(depsolve.Depsolve):
             pkgs = [po]  
         else:
             if kwargs.has_key('pattern'):
+                if kwargs['pattern'][0] == '@':
+                    return self._at_groupremove(kwargs['pattern'])
+
                 (e,m,u) = self.rpmdb.matchPackageNames([kwargs['pattern']])
                 pkgs.extend(e)
                 pkgs.extend(m)



More information about the Yum-cvs-commits mailing list