summaryrefslogtreecommitdiffstats
path: root/layman/overlays/source.py
diff options
context:
space:
mode:
Diffstat (limited to 'layman/overlays/source.py')
-rw-r--r--layman/overlays/source.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/layman/overlays/source.py b/layman/overlays/source.py
index 8ed9d31..1cd6b5b 100644
--- a/layman/overlays/source.py
+++ b/layman/overlays/source.py
@@ -13,8 +13,45 @@
# Author(s):
# Sebastian Pipping <sebastian@pipping.org>
+import os
from layman.overlays.overlay import Overlay
class OverlaySource(Overlay):
def __init__(self, xml, config, ignore = 0, quiet = False):
super(OverlaySource, self).__init__(xml, config, ignore, quiet)
+
+ def supported(self, binaries = []):
+ '''Is the overlay type supported?'''
+
+ if binaries:
+ for command, mtype, package in binaries:
+ found = False
+ if os.path.isabs(command):
+ kind = 'Binary'
+ found = os.path.exists(command)
+ else:
+ kind = 'Command'
+ for d in os.environ['PATH'].split(os.pathsep):
+ f = os.path.join(d, command)
+ if os.path.exists(f):
+ found = True
+ break
+
+ if not found:
+ raise Exception(kind + ' ' + command + ' seems to be missing!'
+ ' Overlay type "' + mtype + '" not support'
+ 'ed. Did you emerge ' + package + '?')
+
+ return True
+
+ def is_supported(self):
+ '''Is the overlay type supported?'''
+
+ try:
+ self.supported()
+ return True
+ except Exception, error:
+ return False
+
+ def command(self):
+ return self.config['%s_command' % self.__class__.type_key]