X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/e7abc7ea1c83b671db65884d7f8e4b8c57762083..ff0d3013c417be695d550196651e845911209bdd:/symm/multigen diff --git a/symm/multigen b/symm/multigen index f498ce2a..4115eb41 100755 --- a/symm/multigen +++ b/symm/multigen @@ -363,7 +363,7 @@ class SequenceTemplate (BasicTemplate): if len(seq) == 1: return seq[0] else: - return super(SequenceTemplate, cls).__new__(cls, seq = seq, **kw) + return super(SequenceTemplate, cls).__new__(cls, **kw) def __init__(me, seq, **kw): """ @@ -519,6 +519,11 @@ def op_l(val): """@{COLUMN:l} -- the item in upper case.""" return val.lower() +@defop +def op_f(val): + """@{COLUMN:f} -- the item, with `/' characters replaced by `-'.""" + return val.replace('/', '-') + R_NOTIDENT = RX.compile(r'[^a-zA-Z0-9_]+') @defop def op_c(val): @@ -741,17 +746,21 @@ def compile_template(file, text): op = OP.OptionParser( description = 'Generates files by filling in simple templates', - usage = 'usage: %prog [-gl] FILE [COL,...=VAL,... ... | @FILE:COL,...] ...', + usage = 'usage: %prog {-l | -g TMPL} FILE [COL,...=VAL,... ... | @FILE:COL,...] ...', version = 'Catacomb version @VERSION@') +def cb_gen(opt, optstr, arg, op): + op.values.input = arg + op.values.mode = 'gen' for short, long, kw in [ ('-l', '--list', dict( action = 'store_const', const = 'list', dest = 'mode', help = 'list filenames generated')), ('-g', '--generate', dict( - action = 'store', metavar = 'PATH', dest = 'input', - help = 'generate output (default)'))]: + action = 'callback', metavar = 'TEMPLATE', + callback = cb_gen, type = 'string', + help = 'generate file(s) from TEMPLATE file'))]: op.add_option(short, long, **kw) -op.set_defaults(mode = 'gen') +op.set_defaults(mode = 'what?') opts, args = op.parse_args() if len(args) < 1: op.error('missing FILE') @@ -787,6 +796,6 @@ elif opts.mode == 'gen': templ.subst(out, cs) OS.rename(new, file) else: - raise Exception, 'What am I doing here?' + die('What am I doing here?') ###----- That's all, folks --------------------------------------------------