diff options
Diffstat (limited to 'gbp')
-rw-r--r-- | gbp/config.py | 38 | ||||
-rw-r--r-- | gbp/deb_utils.py | 20 | ||||
-rw-r--r-- | gbp/git_utils.py | 6 |
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 ] |