aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Dolbec <brian.dolbec@gmail.com>2010-08-07 08:33:52 -0700
committerBrian Dolbec <brian.dolbec@gmail.com>2010-08-07 08:33:52 -0700
commitaf3fbeb1d9893fa710ce281948c99e354834b231 (patch)
treee3962e6ae388d1a5cf0991f7f8e660b35016a42b
parentsome docstring updates (diff)
downloadoverlord-af3fbeb1d9893fa710ce281948c99e354834b231.tar.gz
overlord-af3fbeb1d9893fa710ce281948c99e354834b231.tar.bz2
overlord-af3fbeb1d9893fa710ce281948c99e354834b231.zip
Apply tulcod's g-common support changes.
-rw-r--r--layman/config.py1
-rw-r--r--layman/overlays/g_common.py75
-rw-r--r--layman/overlays/overlay.py2
3 files changed, 78 insertions, 0 deletions
diff --git a/layman/config.py b/layman/config.py
index e62f535..ceafcc4 100644
--- a/layman/config.py
+++ b/layman/config.py
@@ -74,6 +74,7 @@ class BareConfig(object):
'cvs_command': '/usr/bin/cvs',
'darcs_command': '/usr/bin/darcs',
'git_command': '/usr/bin/git',
+ 'g-common_command': '/usr/bin/g-common',
'mercurial_command': '/usr/bin/hg',
'rsync_command': '/usr/bin/rsync',
'svn_command': '/usr/bin/svn',
diff --git a/layman/overlays/g_common.py b/layman/overlays/g_common.py
new file mode 100644
index 0000000..80d0742
--- /dev/null
+++ b/layman/overlays/g_common.py
@@ -0,0 +1,75 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#################################################################################
+# LAYMAN G-COMMON OVERLAY HANDLER
+#################################################################################
+# File: g_common.py
+#
+# Handles g-common-style repositories
+#
+# Copyright:
+# (c) 2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+#
+# Author(s):
+# Auke Booij <auke@tulcod.com>
+#
+''' G-common repository support.'''
+
+#===============================================================================
+#
+# Dependencies
+#
+#-------------------------------------------------------------------------------
+
+import os
+from layman.utils import path
+from layman.overlays.source import OverlaySource, require_supported
+
+#===============================================================================
+#
+# Class GCommonOverlay
+#
+#-------------------------------------------------------------------------------
+
+class GCommonOverlay(OverlaySource):
+ ''' Handles g-common-style repositories.'''
+
+ type = 'g-common'
+ type_key = 'g-common'
+
+ def __init__(self, parent, xml, config, _location, ignore = 0, quiet = False):
+ super(GCommonOverlay, self).__init__(parent, xml, config, _location, ignore, quiet)
+ #split source into driver and remote uri.
+ self.driver=self.src[:self.src.find(' ')]
+ self.remote_uri=self.src[self.src.find(' ')+1:]
+
+ def add(self, base, quiet = False):
+ '''Add overlay.'''
+
+ self.supported()
+
+ os.makedirs(os.path.join(base,self.parent.name))
+ return self.sync(base, quiet)
+
+ def sync(self, base, quiet = False):
+ '''Sync overlay.'''
+
+ self.supported()
+
+ args = [os.path.join(base,self.parent.name), 'sync', self.driver, self.remote_uri]
+ returncode=self.run_command(*args,cwd=path([base,self.parent.name]))
+ if returncode: return returncode
+ args = [os.path.join(base,self.parent.name), 'generate-tree']
+ return self.run_command(*args,cwd=path([base,self.parent.name]))
+
+ def supported(self):
+ '''Overlay type supported?'''
+
+ return require_supported(
+ [(self.command(),
+ 'g-common',
+ 'app-portage/g-common'),
+ ('/usr/share/g-common/drivers/'+self.driver+'.cfg',
+ 'g-common for '+self.driver,
+ 'app-portage/g-'+self.driver),])
diff --git a/layman/overlays/overlay.py b/layman/overlays/overlay.py
index 4036458..6f39ae8 100644
--- a/layman/overlays/overlay.py
+++ b/layman/overlays/overlay.py
@@ -40,6 +40,7 @@ from layman.utils import ensure_unicode
from layman.overlays.bzr import BzrOverlay
from layman.overlays.darcs import DarcsOverlay
from layman.overlays.git import GitOverlay
+from layman.overlays.g_common import GCommonOverlay
from layman.overlays.mercurial import MercurialOverlay
from layman.overlays.cvs import CvsOverlay
from layman.overlays.svn import SvnOverlay
@@ -54,6 +55,7 @@ from layman.overlays.tar import TarOverlay
OVERLAY_TYPES = dict((e.type_key, e) for e in (
GitOverlay,
+ GCommonOverlay,
CvsOverlay,
SvnOverlay,
RsyncOverlay,