From ba4481d37cbedc5700b5ea21c5a1897389ecc1cb Mon Sep 17 00:00:00 2001 From: dol-sen Date: Thu, 28 Jul 2011 23:10:33 -0700 Subject: fix the overly noisy output for unsupported overlay types. Thank you fuzzyray for reporting. --- layman/dbbase.py | 2 +- layman/overlays/bzr.py | 2 +- layman/overlays/cvs.py | 2 +- layman/overlays/darcs.py | 2 +- layman/overlays/g_common.py | 3 ++- layman/overlays/git.py | 2 +- layman/overlays/mercurial.py | 2 +- layman/overlays/rsync.py | 2 +- layman/overlays/source.py | 33 +++++++++++++++++++++++---------- layman/overlays/svn.py | 2 +- layman/overlays/tar.py | 2 +- 11 files changed, 34 insertions(+), 20 deletions(-) (limited to 'layman') diff --git a/layman/dbbase.py b/layman/dbbase.py index b6b0e6d..4714d5f 100644 --- a/layman/dbbase.py +++ b/layman/dbbase.py @@ -75,7 +75,7 @@ class BrokenOverlayCatalog(ValueError): # #------------------------------------------------------------------------------- -class DbBase: +class DbBase(object): ''' Handle a list of overlays.''' def __init__(self, config, paths=None, ignore = 0, diff --git a/layman/overlays/bzr.py b/layman/overlays/bzr.py index 5844176..40e5b81 100644 --- a/layman/overlays/bzr.py +++ b/layman/overlays/bzr.py @@ -89,4 +89,4 @@ class BzrOverlay(OverlaySource): return require_supported( [(self.command(), 'bzr', 'dev-vcs/bzr'),], - self.output.error) + self.output.warn) diff --git a/layman/overlays/cvs.py b/layman/overlays/cvs.py index 83981e5..c902250 100644 --- a/layman/overlays/cvs.py +++ b/layman/overlays/cvs.py @@ -114,4 +114,4 @@ class CvsOverlay(OverlaySource): return require_supported( [(self.command(), 'cvs', 'dev-vcs/cvs'),], - self.output.error) + self.output.warn) diff --git a/layman/overlays/darcs.py b/layman/overlays/darcs.py index 02ef3c7..3e24ebe 100644 --- a/layman/overlays/darcs.py +++ b/layman/overlays/darcs.py @@ -90,4 +90,4 @@ class DarcsOverlay(OverlaySource): return require_supported( [(self.command(), 'darcs', 'dev-vcs/darcs'),], - self.output.error) + self.output.warn) diff --git a/layman/overlays/g_common.py b/layman/overlays/g_common.py index df7c4a4..cb162e8 100644 --- a/layman/overlays/g_common.py +++ b/layman/overlays/g_common.py @@ -84,4 +84,5 @@ class GCommonOverlay(OverlaySource): 'app-portage/g-common'), ('/usr/share/g-common/drivers/'+self.driver+'.cfg', 'g-common for '+self.driver, - 'app-portage/g-'+self.driver),], self.output.error) + 'app-portage/g-'+self.driver),], + self.output.warn) diff --git a/layman/overlays/git.py b/layman/overlays/git.py index 5775277..f6a350f 100644 --- a/layman/overlays/git.py +++ b/layman/overlays/git.py @@ -95,4 +95,4 @@ class GitOverlay(OverlaySource): return require_supported( [(self.command(), 'git', 'dev-vcs/git'),], - self.output.error) + self.output.warn) diff --git a/layman/overlays/mercurial.py b/layman/overlays/mercurial.py index ebaf635..5247e78 100644 --- a/layman/overlays/mercurial.py +++ b/layman/overlays/mercurial.py @@ -90,4 +90,4 @@ class MercurialOverlay(OverlaySource): return require_supported( [(self.command(), 'mercurial', 'dev-vcs/mercurial'),], - self.output.error) + self.output.warn) diff --git a/layman/overlays/rsync.py b/layman/overlays/rsync.py index f4537ed..3c03ae2 100644 --- a/layman/overlays/rsync.py +++ b/layman/overlays/rsync.py @@ -86,4 +86,4 @@ class RsyncOverlay(OverlaySource): return require_supported( [(self.command(), 'rsync', 'net-misc/rsync'),], - self.output.error) + self.output.warn) diff --git a/layman/overlays/source.py b/layman/overlays/source.py index b833fd2..083beb6 100644 --- a/layman/overlays/source.py +++ b/layman/overlays/source.py @@ -20,11 +20,21 @@ import shutil import subprocess from layman.utils import path - -def _resolve_command(command, error_output): +supported_cache = {} + +def _supported(key, check_supported=None): + """internal caching function that checks tracks any + un-supported/supported repo types.""" + if key is None: + return False + if key not in supported_cache: + supported_cache[key] = check_supported() + return supported_cache[key] + +def _resolve_command(command, _output): if os.path.isabs(command): if not os.path.exists(command): - error_output('Program "%s" not found' % command) + _output('Program "%s" not found' % command, 6) return ('File', None) return ('File', command) else: @@ -34,18 +44,18 @@ def _resolve_command(command, error_output): f = os.path.join(d, command) if os.path.exists(f): return ('Command', f) - error_output('Cound not resolve command ' +\ - '"%s" based on PATH "%s"' % (command, env_path)) + _output('Cound not resolve command ' +\ + '"%s" based on PATH "%s"' % (command, env_path), 6) return ('Command', None) -def require_supported(binaries, error_output): +def require_supported(binaries, _output): for command, mtype, package in binaries: - kind, path = _resolve_command(command, error_output) + kind, path = _resolve_command(command, _output) if not path: - error_output(kind + ' ' + command + ' seems to be missing!' + _output(kind + ' ' + command + ' seems to be missing!' ' Overlay type "' + mtype + '" not support' - 'ed. Did you emerge ' + package + '?') + 'ed. Did you emerge ' + package + '?', 6) return False return True @@ -106,7 +116,10 @@ class OverlaySource(object): def is_supported(self): '''Is the overlay type supported?''' - return self.supported() + return _supported(self.get_type_key(), self.supported) + + def get_type_key(self): + return '%s' % self.__class__.type_key def command(self): return self.config['%s_command' % self.__class__.type_key] diff --git a/layman/overlays/svn.py b/layman/overlays/svn.py index 59b6284..97f03d6 100644 --- a/layman/overlays/svn.py +++ b/layman/overlays/svn.py @@ -103,4 +103,4 @@ class SvnOverlay(OverlaySource): return require_supported( [(self.command(), 'svn','dev-vcs/subversion'),], - self.output.error) + self.output.warn) diff --git a/layman/overlays/tar.py b/layman/overlays/tar.py index dc2234a..7be2ed2 100644 --- a/layman/overlays/tar.py +++ b/layman/overlays/tar.py @@ -210,7 +210,7 @@ class TarOverlay(OverlaySource): return require_supported( [(self.command(), 'tar', 'app-arch/tar'), ], - self.output.error) + self.output.warn) if __name__ == '__main__': import doctest -- cgit v1.2.3-1-g7c22