From af55bea519642b9742135498e5fddaececab7d1f Mon Sep 17 00:00:00 2001 From: Brian Dolbec Date: Thu, 17 Feb 2011 13:48:54 -0800 Subject: add per repo type config options --- etc/layman.cfg | 43 ++++++++++++++++++++++++++++++++++++++++--- layman/overlays/bzr.py | 15 +++++++++++++-- layman/overlays/cvs.py | 8 ++++++++ layman/overlays/darcs.py | 17 +++++++++++++++-- layman/overlays/git.py | 8 ++++++++ layman/overlays/mercurial.py | 17 +++++++++++++++-- layman/overlays/rsync.py | 5 +++++ layman/overlays/svn.py | 31 +++++++++++++++++++++---------- 8 files changed, 125 insertions(+), 19 deletions(-) diff --git a/etc/layman.cfg b/etc/layman.cfg index ea68e66..f345fe1 100644 --- a/etc/layman.cfg +++ b/etc/layman.cfg @@ -17,13 +17,13 @@ cache : %(storage)s/cache local_list: %(storage)s/overlays.xml #----------------------------------------------------------- -# Path to the make.conf file that should be modified by +# Path to the make.conf file that should be modified by # layman make_conf : %(storage)s/make.conf #----------------------------------------------------------- -# URLs of the remote lists of overlays (one per line) or +# URLs of the remote lists of overlays (one per line) or # local overlay definitions # #overlays : http://www.gentoo.org/proj/en/overlays/repositories.xml @@ -46,7 +46,7 @@ overlays : http://www.gentoo.org/proj/en/overlays/repositories.xml # Hopefully this description eases the double negation trouble: # # nocheck : yes -# - Accepts completene overlay entries without warnings +# - Accepts complete overlay entries without warnings # - Lists overlays of type foo (say Git) even with no foo installed # # nocheck : no @@ -87,3 +87,40 @@ nocheck : yes #rsync_command : /usr/bin/rsync #svn_command : /usr/bin/svn #tar_command : /bin/tar +#g-common_command : /usr/bin/g-common + + +#----------------------------------------------------------- +# Command additional options +# +# These commnad options will be added to the above commands +# when the overlay is added or synced. +# +# note: there are some options hardcoded in the backend +# scripts already. All VCS types listed here are +# for general consistency. Options may not be available +# or recommended for all VCS types and/or add/sync operations. +# Any options defined here are deemed: +# "Use at your own risk" +# and are not supported. +# +# eg: +# svn_addopts : --config-option=config:miscellany:use-commit-times=yes +# + +#bzr_addopts : +#bzr_syncopts : +#cvs_addopts : +#cvs_syncopts : +#darcs_addopts : +#darcs_syncopts : +#git_addopts : +#git_syncopts : +#mercurial_addopts : +#mercurial_syncopts : +#rsync_syncopts : +#svn_addopts : +#svn_syncopts : +#g-common_generateopts : +#g-common_syncopts : + diff --git a/layman/overlays/bzr.py b/layman/overlays/bzr.py index e73c2f4..a236210 100644 --- a/layman/overlays/bzr.py +++ b/layman/overlays/bzr.py @@ -50,8 +50,14 @@ class BzrOverlay(OverlaySource): self.supported() + cfg_opts = self.config["bzr_addopts"] + # bzr get SOURCE TARGET - args = ['get', self.src + '/', path([base, self.parent.name])] + if cfg_opts: + args = ['get', cfg_opts, + self.src + '/', path([base, self.parent.name])] + else: + args = ['get', self.src + '/', path([base, self.parent.name])] return self.run_command(*args) def sync(self, base, quiet = False): @@ -59,8 +65,13 @@ class BzrOverlay(OverlaySource): self.supported() + cfg_opts = self.config["bzr_syncopts"] + # bzr pull --overwrite SOURCE - args = ['pull', '--overwrite', self.src] + if cfg_opts: + args = ['pull', cfg_opts, '--overwrite', self.src] + else: + args = ['pull', '--overwrite', self.src] return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): diff --git a/layman/overlays/cvs.py b/layman/overlays/cvs.py index f8fc277..e4ee5eb 100644 --- a/layman/overlays/cvs.py +++ b/layman/overlays/cvs.py @@ -74,12 +74,16 @@ class CvsOverlay(OverlaySource): self.supported() + cfg_opts = self.config["cvs_addopts"] + # cvs [-q] co -d SOURCE SCOPE args = [] if quiet: args.append('-q') args.append('co') args.append('-d') + if cfg_opts: + args.append(cfg_opts) args.append(self.parent.name) args.append(self.subpath) @@ -90,12 +94,16 @@ class CvsOverlay(OverlaySource): self.supported() + cfg_opts = self.config["cvs_syncopts"] + # cvs [-q] update -d args = [] if quiet: args.append('-q') args.append('update') args.append('-d') + if cfg_opts: + args.append(cfg_opts) return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): diff --git a/layman/overlays/darcs.py b/layman/overlays/darcs.py index 7d89477..cfaba51 100644 --- a/layman/overlays/darcs.py +++ b/layman/overlays/darcs.py @@ -49,8 +49,16 @@ class DarcsOverlay(OverlaySource): self.supported() + cfg_opts = self.config["darcs_addopts"] + # darcs get --partial SOURCE TARGET - args = ['get', '--partial', self.src + '/', path([base, self.parent.name])] + if cfg_opts: + args = ['get', '--partial', cfg_opts, + self.src + '/', path([base, self.parent.name])] + else: + args = ['get', '--partial', + self.src + '/', path([base, self.parent.name])] + return self.run_command(*args) def sync(self, base, quiet = False): @@ -58,8 +66,13 @@ class DarcsOverlay(OverlaySource): self.supported() + cfg_opts = self.config["darcs_addopts"] + # darcs pull --all SOURCE - args = ['pull', '--all', self.src] + if cfg_opts: + args = ['pull', '--all', cfg_opts, self.src] + else: + args = ['pull', '--all', self.src] return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): diff --git a/layman/overlays/git.py b/layman/overlays/git.py index caa73f4..9517398 100644 --- a/layman/overlays/git.py +++ b/layman/overlays/git.py @@ -54,10 +54,14 @@ class GitOverlay(OverlaySource): return source + '/' return source + cfg_opts = self.config["git_addopts"] + # git clone [-q] SOURCE TARGET args = ['clone'] if quiet: args.append('-q') + if cfg_opts: + args.append(cfg_opts) args.append(fix_git_source(self.src)) args.append(path([base, self.parent.name])) return self.run_command(*args) @@ -67,9 +71,13 @@ class GitOverlay(OverlaySource): self.supported() + cfg_opts = self.config["git_syncopts"] + args = ['pull'] if quiet: args.append('-q') + if cfg_opts: + args.append(cfg_opts) return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): diff --git a/layman/overlays/mercurial.py b/layman/overlays/mercurial.py index 06cf59d..377ad4c 100644 --- a/layman/overlays/mercurial.py +++ b/layman/overlays/mercurial.py @@ -49,8 +49,15 @@ class MercurialOverlay(OverlaySource): self.supported() + cfg_opts = self.config["mercurial_addopts"] + # hg clone SOURCE TARGET - args = ['clone', self.src + '/', path([base, self.parent.name])] + if cfg_opts: + args = ['clone', cfg_opts, + self.src + '/', path([base, self.parent.name])] + else: + args = ['clone', self.src + '/', path([base, self.parent.name])] + return self.run_command(*args) def sync(self, base, quiet = False): @@ -58,8 +65,14 @@ class MercurialOverlay(OverlaySource): self.supported() + cfg_opts = self.config["mercurial_syncopts"] + # hg pull -u SOURCE - args = ['pull', '-u', self.src] + if cfg_opts: + args = ['pull', '-u', cfg_opts, self.src] + else: + args = ['pull', '-u', self.src] + return self.run_command(*args, cwd=path([base, self.parent.name])) def supported(self): diff --git a/layman/overlays/rsync.py b/layman/overlays/rsync.py index 3a5a342..d6f3281 100644 --- a/layman/overlays/rsync.py +++ b/layman/overlays/rsync.py @@ -61,8 +61,13 @@ class RsyncOverlay(OverlaySource): # rsync OPTIONS [-q] SOURCE TARGET args = ['-rlptDvz', '--progress', '--delete', '--delete-after', '--timeout=180', '--exclude=distfiles/*', '--exclude=local/*', '--exclude=packages/*'] + + cfg_opts = self.config["rsync_syncopts"] + if quiet: args.append('-q') + if cfg_opts: + args.append(cfg_opts) args.append(self.src + '/') args.append(path([base, self.parent.name])) diff --git a/layman/overlays/svn.py b/layman/overlays/svn.py index 2a30198..69d7b05 100644 --- a/layman/overlays/svn.py +++ b/layman/overlays/svn.py @@ -1,8 +1,8 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -################################################################################# +############################################################################### # LAYMAN SVN OVERLAY HANDLER -################################################################################# +############################################################################### # File: svn.py # # Handles subversion overlays @@ -18,20 +18,20 @@ __version__ = "$Id: svn.py 236 2006-09-05 20:39:37Z wrobel $" -#=============================================================================== +#============================================================================== # # Dependencies # -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------ from layman.utils import path from layman.overlays.source import OverlaySource, require_supported -#=============================================================================== +#============================================================================== # # Class SvnOverlay # -#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------ class SvnOverlay(OverlaySource): ''' Handles subversion overlays.''' @@ -39,9 +39,11 @@ class SvnOverlay(OverlaySource): type = 'Subversion' type_key = 'svn' - def __init__(self, parent, xml, config, _location, ignore = 0, quiet = False): + def __init__(self, parent, xml, config, _location, + ignore = 0, quiet = False): - super(SvnOverlay, self).__init__(parent, xml, config, _location, ignore, quiet) + super(SvnOverlay, self).__init__( + parent, xml,config, _location, ignore, quiet) def add(self, base, quiet = False): '''Add overlay.''' @@ -50,9 +52,13 @@ class SvnOverlay(OverlaySource): super(SvnOverlay, self).add(base) + cfg_opts = self.config["svn_addopts"] + args = ['co'] if quiet: args.append('-q') + if cfg_opts: + args.append(cfg_opts) args.append(self.src + '/@') args.append(path([base, self.parent.name])) @@ -71,10 +77,14 @@ class SvnOverlay(OverlaySource): repo_part = repo_part + '@' return path([base, repo_part]) + cfg_opts = self.config["svn_syncopts"] + # svn up [-q] TARGET args = ['up'] if quiet: args.append('-q') + if cfg_opts: + args.append(cfg_opts) args.append(checkout_location()) return self.run_command(*args) @@ -82,5 +92,6 @@ class SvnOverlay(OverlaySource): def supported(self): '''Overlay type supported?''' - return require_supported([(self.command(), 'svn', - 'dev-vcs/subversion'),]) + return require_supported( + [(self.command(), 'svn','dev-vcs/subversion'),] + ) -- cgit v1.2.3-1-g7c22