6 Author : Valentin Kuznetsov <vkuznet@gmail.com> 9 from __future__
import print_function
15 from optparse
import OptionParser
18 from FWCore.Skeletons.utils
import code_generator, test_env
20 if sys.version_info < (2, 6):
21 raise Exception(
"This script requires python 2.6 or greater")
24 "Retturn default location of template directory" 25 return '%s/templates' %
'/'.
join(__file__.split(
'/')[:-1])
28 "Skeleton option parser" 30 cname = os.environ.get(
'MKTMPL_CMD',
'main.py')
31 usage =
"Usage: %s [options]\n" % cname
32 self.
parser = OptionParser(usage=usage)
34 self.parser.add_option(
"--debug", action=
"store_true",
35 default=
False, dest=
"debug", help=msg)
36 msg =
"specify template, e.g. EDProducer" 37 self.parser.add_option(
"--tmpl", action=
"store", type=
"string",
38 default=
'', dest=
"tmpl", help=msg)
39 msg =
"specify package name, e.g. MyProducer" 40 self.parser.add_option(
"--name", action=
"store", type=
"string",
41 default=
"TestPkg", dest=
"pname", help=msg)
42 msg =
"specify author name" 43 self.parser.add_option(
"--author", action=
"store", type=
"string",
44 default=
"", dest=
"author", help=msg)
45 msg =
"specify file type to generate, " 46 msg +=
"e.g. --ftype=header, default is all files" 47 self.parser.add_option(
"--ftype", action=
"store", type=
"string",
48 default=
"all", dest=
"ftype", help=msg)
49 msg =
"list examples tags which should be kept in " 50 msg +=
"generate code, e.g. " 51 msg +=
"--keep-etags='@example_trac,@example_hist'" 52 self.parser.add_option(
"--keep-etags", action=
"store", type=
"string",
53 default=
None, dest=
"ketags", help=msg)
54 msg =
"specify template directory, " 55 self.parser.add_option(
"--tdir", action=
"store", type=
"string",
56 default=
tmpl_dir(), dest=
"tdir", help=msg)
57 msg =
"list template tags" 58 self.parser.add_option(
"--tags", action=
"store_true",
59 default=
False, dest=
"tags", help=msg)
60 msg =
"list template example tags" 61 self.parser.add_option(
"--etags", action=
"store_true",
62 default=
False, dest=
"etags", help=msg)
63 msg =
"list supported templates" 64 self.parser.add_option(
"--templates", action=
"store_true",
65 default=
False, dest=
"templates", help=msg)
67 "Returns parse list of options" 68 return self.parser.parse_args()
71 "Parse input arguments" 74 key, val = arg.split(
'=')
77 if val[0] ==
'[' and val[-1] ==
']':
78 val = eval(val, {
"__builtins__":
None }, {})
84 Code generator function, parse user arguments and load appropriate 85 template module. Once loaded, run its data method depending on 86 user requested input parameter, e.g. print_etags, print_tags or 87 generate template code. 90 opts, args = optmgr.get_opt()
91 test_env(os.path.join(opts.tdir, opts.tmpl), opts.tmpl)
92 config = {
'pname': opts.pname,
'tmpl': opts.tmpl,
'author': opts.author,
94 'ftype': opts.ftype,
'tmpl_dir': opts.tdir}
96 etags = opts.ketags.split(
',')
97 config.update({
'tmpl_etags': etags})
99 config.update({
'tmpl_etags': []})
108 for name
in os.listdir(opts.tdir):
113 if __name__ ==
'__main__':
S & print(S &os, JobReport::InputFile const &f)
static std::string join(char **cmd)