aboutsummaryrefslogtreecommitdiffhomepage
path: root/gbp
diff options
context:
space:
mode:
Diffstat (limited to 'gbp')
-rw-r--r--gbp/config.py38
-rw-r--r--gbp/deb_utils.py20
-rw-r--r--gbp/git_utils.py6
3 files changed, 46 insertions, 18 deletions
diff --git a/gbp/config.py b/gbp/config.py
index b9948aca..b4d7d2e8 100644
--- a/gbp/config.py
+++ b/gbp/config.py
@@ -3,7 +3,7 @@
# (C) 2006,2007 Guido Guenther <agx@sigxcpu.org>
"""handles command line and config file option parsing for the gbp commands"""
-from optparse import OptionParser
+from optparse import OptionParser, OptionGroup
from ConfigParser import SafeConfigParser
import os.path
from gbp.gbp_version import gbp_version
@@ -71,6 +71,16 @@ class GbpOptionParser(OptionParser):
self.__parse_config_files()
OptionParser.__init__(self, usage=usage, version='%s %s' % (self.command, gbp_version))
+ def get_default(self, option_name, **kwargs):
+ default = self.config[option_name]
+ if kwargs.has_key('action'):
+ if kwargs['action'] in [ 'store_true', 'store_false' ] and self.config[option_name]:
+ if self.config[option_name] in [ 'True', 'False' ]:
+ default = eval(self.config[option_name])
+ else:
+ raise ValueError, "Boolean options must be True or False"
+ return default
+
def add_config_file_option(self, option_name, dest, help, **kwargs):
"""
set a option for the command line parser, the default is read from the config file
@@ -81,15 +91,23 @@ class GbpOptionParser(OptionParser):
@var help: help text
@type help: string
"""
- default = self.config[option_name]
- if kwargs.has_key('action'):
- if kwargs['action'] in [ 'store_true', 'store_false'] and self.config[option_name]:
- if self.config[option_name] in [ 'True', 'False' ]:
- default = eval(self.config[option_name])
- else:
- raise ValueError, "Boolean options must be True or False"
- OptionParser.add_option(self,"--%s%s" % (self.prefix, option_name), dest=dest,
- default=default,
+ OptionParser.add_option(self, "--%s%s" % (self.prefix, option_name), dest=dest,
+ default=self.get_default(option_name, **kwargs),
help=help % self.config, **kwargs)
+class GbpOptionGroup(OptionGroup):
+ def add_config_file_option(self, option_name, dest, help, **kwargs):
+ """
+ set a option for the command line parser, the default is read from the config file
+ @var option_name: name of the option
+ @type option_name: string
+ @var dest: where to store this option
+ @type dest: string
+ @var help: help text
+ @type help: string
+ """
+ OptionGroup.add_option(self, "--%s%s" % (self.parser.prefix, option_name), dest=dest,
+ default=self.parser.get_default(option_name, **kwargs),
+ help=help % self.parser.config, **kwargs)
+
# vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·:
diff --git a/gbp/deb_utils.py b/gbp/deb_utils.py
index a96bb8ea..e1b47483 100644
--- a/gbp/deb_utils.py
+++ b/gbp/deb_utils.py
@@ -145,18 +145,28 @@ def has_orig(cp, dir):
return False
return True
-def copy_orig(cp, orig_dir, output_dir):
- """copy orig.tar.gz from orig_dir to output_dir"""
+def symlink_orig(cp, orig_dir, output_dir, force=False):
+ """
+ symlink orig.tar.gz from orig_dir to output_dir
+ @return: True if link was created or src == dst
+ False in case of errror or src doesn't exist
+ """
orig_dir = os.path.abspath(orig_dir)
output_dir = os.path.abspath(output_dir)
if orig_dir == output_dir:
return True
+ src = os.path.join(orig_dir, orig_file(cp))
+ dst = os.path.join(output_dir, orig_file(cp))
+ if not os.access(src, os.F_OK):
+ return False
try:
- shutil.copyfile(os.path.join(orig_dir, orig_file(cp)),
- os.path.join(output_dir, orig_file(cp)))
- except IOError:
+ if os.access(dst, os.F_OK) and force:
+ os.unlink(dst)
+ print src, dst
+ os.symlink(src, dst)
+ except OSError:
return False
return True
diff --git a/gbp/git_utils.py b/gbp/git_utils.py
index 5f6158c6..13845d56 100644
--- a/gbp/git_utils.py
+++ b/gbp/git_utils.py
@@ -96,9 +96,9 @@ class GitRepository(object):
def commits(self, start, end, paths, options):
"""get commits from start to end touching pathds"""
- commits, ret = self.__git_getoutput('log', ['--pretty=format:%H',
- options, '%s..%s' % (start, end),
- '--', paths])
+ commits, ret = self.__git_getoutput('log',
+ ['--pretty=format:%H'] + options +
+ ['%s..%s' % (start, end), '--', paths])
if ret:
raise GitRepositoryError, "Error getting commits %s..%s%s" % (start, end, ["", " on %s" % paths][len(paths) > 0] )
return [ commit.strip() for commit in commits ]