summaryrefslogtreecommitdiff
blob: 1ef90c9200ed5149adb73dab59debc062f5d2013 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
--- ./g-octave-0.4.1/g_octave/package_manager.py	2010-10-23 23:37:26.000000000 +0200
+++ ./g-octave-0.4.1/g_octave/package_manager.py	2011-05-25 12:52:10.510019006 +0200
@@ -15,6 +15,7 @@
     'Portage',
     'Pkgcore',
     'Paludis',
+    'Cave',
 ]
 
 import grp
@@ -243,3 +244,56 @@
                 packages.append(line.strip())
         return packages
 
+class Cave(Base):
+    
+    _client = '/usr/bin/cave'
+    _group = 'paludisbuild'
+    
+    post_uninstall = [
+        'You may want to remove the dependencies too, using:',
+        '# cave purge',
+    ]
+    
+    def __init__(self, ask=False, verbose=False, pretend=False, oneshot=False, nocolor=False):
+        self._fullcommand = [self._client]
+        self._cmd = ['-z']
+        oneshot and self._cmd.append('-1')
+        not pretend and self._cmd.append('-x')
+        #if verbose:
+        #    self._fullcommand += [
+        #        '--show-descriptions', 'all',
+        #        '--show-option-descriptions', 'all',
+        #    ]
+        #cave doesn't support '--ask'
+        #cave doesn't support '--no-color'
+    
+    def run_command(self, command):
+        return subprocess.call(self._fullcommand + command + self._cmd)
+    
+    def install_package(self, pkgatom, catpkg):
+        return self.run_command(['resolve'] + [pkgatom])
+
+    def uninstall_package(self, pkgatom, catpkg):
+        return self.run_command(['uninstall'] + [pkgatom])
+    
+    def update_package(self, pkgatom=None, catpkg=None):
+        cmd = ['-1','-K','s','-k','s']
+        if pkgatom is None:
+            pkgatom = self.installed_packages()
+        else:
+            pkgatom = [pkgatom]
+        self.do_ebuilds(pkgatom)
+        return self.run_command(['resolve'] + cmd + pkgatom)
+    
+    def installed_packages(self):
+        packages = []
+        p = subprocess.Popen([
+            'cave',
+            'print-ids',
+            '--matching', 'g-octave/*::installed',
+            '--format', '%c/%p\n',
+        ], stdout=subprocess.PIPE)
+        if p.wait() == os.EX_OK:
+            for line in p.stdout:
+                packages.append(line.strip())
+        return packages
--- ./g-octave-0.4.1/scripts/g-octave	2011-05-25 12:00:25.740019020 +0200
+++ ./g-octave-0.4.1/scripts/g-octave	2011-05-25 12:00:39.434019008 +0200
@@ -217,7 +217,7 @@
             return os.EX_DATAERR
         return os.EX_OK
 
-    from g_octave.package_manager import Portage, Pkgcore, Paludis
+    from g_octave.package_manager import Portage, Pkgcore, Paludis, Cave
 
     if conf_prefetch.package_manager == 'portage':
         log.info('Your package manager is: Portage')
@@ -228,6 +228,9 @@
     elif conf_prefetch.package_manager == 'paludis':
         log.info('Your package manager is: Paludis')
         pkg_manager = Paludis(options.ask, options.verbose, options.pretend, options.oneshot, not options.colors)
+    elif conf_prefetch.package_manager == 'cave':
+        log.info('Your package manager is: Paludis (Cave)')
+        pkg_manager = Cave(options.ask, options.verbose, options.pretend, options.oneshot, not options.colors)
     else:
         log.error('Invalid package manager: %s' % conf_prefetch.package_manager)
         out.eerror('Invalid package manager: %s' % conf_prefetch.package_manager)