#! @PYTHON@ ### -*-python-*- from cdb import cdbmake from re import compile as r_compile, sub as r_sub from sys import argv, stdin, stderr, exit ego = r_sub(r'^.*[/\\]', '', argv[0]) def die(msg, prefix = True): if prefix: msg ='%s: %s' % (ego, msg) print >>stderr, msg exit(1) def files(args): if len(args) == 0: yield stdin else: for a in args: if a == '-': yield stdin else: yield open(a, 'r') if len(argv) < 2: die('usage: %s CDB [INPUT ...]' % ego, False) rx_comment = r_compile(r'^\s*(\#|$)') rx_split = r_compile(r'^\s*([-\w]+)\s*=\s*(.*\S|)\s*$') cdb = cdbmake(argv[1], argv[1] + '.new') for f in files(argv[2:]): for line in f: if len(line) and line[-1] == '\n': line = line[:-1] if rx_comment.match(line): continue m = rx_split.match(line) if not m: die("bad assignment: `%s'" % line) k, v = m.groups([1, 2]) cdb.add(k, v) cdb.finish()