Mercurial > hg > MakeItSo
diff makeitso/cli.py @ 60:da0d8c5c5157
what i really meant to do with variables
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Thu, 06 Jan 2011 17:12:36 -0800 |
parents | 93f2b2c7f838 |
children | 57f9b0349192 |
line wrap: on
line diff
--- a/makeitso/cli.py Thu Jan 06 16:38:40 2011 -0800 +++ b/makeitso/cli.py Thu Jan 06 17:12:36 2011 -0800 @@ -15,11 +15,20 @@ return a command line parser for the template """ usage = '%prog [options] output [var1=value1] [var2=value2] [...]' - description = getattr(template, 'description', None) + description = getattr(self.template_class, 'description', None) parser = OptionParser(usage=usage, description=description) - parser.add_options('--variables', dest='variables', - action='store_true', default=False, - help="display variables in the template") + + # add the variables as options + for variable in self.template_class.vars: + parser.add_option('--%s' % variable.name, dest=variable.name, + default=variable.default, + help=variable.description) + + # add CLI-specific options + # should start with '_' to indicate reserved + parser.add_option('--variables', dest='_print_variables', + action='store_true', default=False, + help="display variables in the template") return parser def parse(self): @@ -27,12 +36,7 @@ options, args = parser.parse_args() # print the variables for the templates - if options.variables: - - # makes no sense without a template - if not args: - parser.print_usage() - parser.exit() + if options._print_variables: # find all variables template = self.template() @@ -43,19 +47,16 @@ print variable return + # ensure output is given + if len(args) != 1: + parser.error("Please specify one output") + # template variables - variables = {} - output = [] - for arg in args: - if '=' in arg: - key, value = arg.split('=') - variables[key] = value - else: - output.append(arg) - if len(output) != 1: - parser.error("Please specify one output") + variables = dict([(key, value) + for key, value in options.__dict__.items() + if not key.startswith('_')]) # instantiate the template - template = self.template_class(output=output[0], variables=variables) + template = self.template_class(output=args[0], variables=variables) return template