diff options
Diffstat (limited to 'layman/overlays/source.py')
-rw-r--r-- | layman/overlays/source.py | 37 |
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] |