"""
import os
+import re
import shutil
import errno
upstream_branch = configmgr.get('upstream_branch', 'general')
return not repo.has_branch(upstream_branch)
+def transform_var_format_from_shell_to_python(whole):
+ '''replace string like ${xxx} with %(xxx)s'''
+ return re.sub(r'\$\{([^}]+)\}', r'%(\1)s', whole)
+
def create_gbp_export_args(repo, commit, export_dir, tmp_dir, spec, opts,
force_native=False):
"""
upstream_tag = opts.upstream_tag
else:
upstream_tag = configmgr.get('upstream_tag', 'general')
+ upstream_tag = transform_var_format_from_shell_to_python(upstream_tag)
msger.debug("Using upstream branch: %s" % upstream_branch)
msger.debug("Using upstream tag format: '%s'" % upstream_tag)
import ast
import base64
import shutil
-from ConfigParser import SafeConfigParser, NoSectionError, NoOptionError, \
+from ConfigParser import SafeConfigParser, NoSectionError, \
MissingSectionHeaderError, Error
from gitbuildsys import msger, errors
'tmpdir': '/var/tmp',
'editor': '',
'upstream_branch': 'upstream',
- 'upstream_tag': 'upstream/%(upstreamversion)s',
+ 'upstream_tag': 'upstream/${upstreamversion}',
'squash_patches_until': '',
},
'build': {
self._cfgparsers = []
self.reset_from_conf(fpath)
+ def _create_default_parser(self):
+ 'create a default parser that handle DEFAULTS values'
+ parser = BrainConfigParser()
+ for sec, options in self.DEFAULTS.iteritems():
+ parser.add_section(sec)
+ for key, val in options.iteritems():
+ parser.set(sec, key, val)
+ return parser
+
def reset_from_conf(self, fpath):
'reset all config values by files passed in'
if fpath:
except Error, err:
raise errors.ConfigError('config file error:%s' % err)
self._cfgparsers.append(cfgparser)
+ self._cfgparsers.append(self._create_default_parser())
+
self._check_passwd()
@staticmethod
def _get(self, opt, section='general'):
'get value from multi-levels of config file'
- sect_found = False
for cfgparser in self._cfgparsers:
try:
return cfgparser.get(section, opt)
- except NoSectionError:
+ except Error, err:
pass
- except NoOptionError:
- sect_found = True
-
- if section in self.DEFAULTS and opt in self.DEFAULTS[section]:
- return self.DEFAULTS[section][opt]
-
- if not sect_found:
- raise errors.ConfigError('no section %s' % str(section))
- else:
- raise errors.ConfigError('no opt: %s in section %s' \
- % (opt, str(section)))
+ raise errors.ConfigError(err)
def options(self, section='general'):
'merge and return options of certain section from multi-levels'
try:
options.update(cfgparser.options(section))
sect_found = True
- except NoSectionError:
+ except Error, err:
pass
- if section in self.DEFAULTS:
- options.update(self.DEFAULTS[section].keys())
- sect_found = True
-
if not sect_found:
- raise errors.ConfigError('invalid section %s' % (section))
+ raise errors.ConfigError(err)
return options
'test invalid cointinuation line'
self.assertRaises(ConfigError, reload, gitbuildsys.conf)
+ @Fixture(home='interpolation.ini')
+ def test_interpolation(self):
+ 'test interpolation is supported'
+ self.assertEquals('abc/def', self.get('remote', 'target'))
+
if __name__ == '__main__':
unittest.main()
\ No newline at end of file
@cmdln.option('--upstream-tag',
default=None,
dest='upstream_tag',
- help="Upstream tag format, e.g. 'v%(upstreamversion)s'")
+ help="Upstream tag format, e.g. 'v${upstreamversion}'")
@cmdln.option('--squash-patches-until',
default=None,
dest='squash_patches_until',
@cmdln.option('--upstream-tag',
default=None,
dest='upstream_tag',
- help="Upstream tag format, e.g. 'v%(upstreamversion)s'")
+ help="Upstream tag format, e.g. 'v${upstreamversion}'")
@cmdln.option('--squash-patches-until',
default=None,
dest='squash_patches_until',
@cmdln.option('--upstream-tag',
default=None,
dest='upstream_tag',
- help="Upstream tag format, e.g. 'v%(upstreamversion)s'")
+ help="Upstream tag format, e.g. 'v${upstreamversion}'")
@cmdln.option('--squash-patches-until',
default=None,
dest='squash_patches_until',