X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/distorted-keys/blobdiff_plain/c47f2aba7d705252c660ba1ad0931fbb93122d80..f56732113e534c3bd29af551a2261d2f07e9c5ea:/extract-profile.in diff --git a/extract-profile.in b/extract-profile.in old mode 100644 new mode 100755 index 1d19fc2..918da8c --- a/extract-profile.in +++ b/extract-profile.in @@ -279,7 +279,7 @@ class Section (object, UD.DictMixin): left = dol + 1 while left < n and (string[left].isalnum() or string[left] in '-_'): left += 1 - prop = string[dol + 1:left].replace('-', '_') + prop = string[dol + 1:left] ## If we came up empty, report an error. if prop == '': @@ -287,6 +287,7 @@ class Section (object, UD.DictMixin): "invalid placeholder (empty name) in `%s'" % string ## Extend the path: we're going to do a recursive expansion. + prop = prop.replace('-', '_') path.append(prop) ## Report a cycle if we found one. @@ -375,6 +376,8 @@ def parse(filename, d): continue if line[0] == '[' and line[-1] == ']': sect = line[1:-1] + if sect not in d: + d[sect] = Section(sect) continue ## Parse an assignment. @@ -392,18 +395,13 @@ def parse(filename, d): raise UserError, "%s:%d: bad name `%s'" % (filename, n, name) ## Store the assignment. - try: - d[sect][name] = value - except KeyError: - s = Section(sect) - d[sect] = s - s[name] = value + d[sect][name] = value ###-------------------------------------------------------------------------- ### Main program. OP = O.OptionParser( - usage = '%prog FILE|DIRECTORY ... SECTION', + usage = '%prog SECTION FILE|DIRECTORY ...', version = '%%prog, version %s' % VERSION, description = '''\ Parse the configurations FILE and DIRECTORY contents, and output the named @@ -417,8 +415,8 @@ def main(args): opts, args = OP.parse_args(args[1:]) if len(args) < 2: OP.error('not enough positional parameters') - files = args[:-1] - sect = args[-1] + sect = args[0] + files = args[1:] ## Read in the inputs. d = { '@GLOBAL': Section('@GLOBAL') }