diff options
author | R. Tyler Ballance <tyler@slide.com> | 2009-07-16 15:25:04 -0700 |
---|---|---|
committer | R. Tyler Ballance <tyler@slide.com> | 2009-07-16 15:25:04 -0700 |
commit | 832a7c766de46cff23d6716ece9efd79db78cf5d (patch) | |
tree | 33e02b22a69491ea12241461ffdc9caa1f65d15b /cheetah/TemplateCmdLineIface.py | |
parent | dc896aa348b7d5e4dbeed440c6ae8cf8ebdf2fdd (diff) | |
download | python-cheetah-832a7c766de46cff23d6716ece9efd79db78cf5d.tar.gz |
Rename the root package to "cheetah" instead of "src" to follow more conventional python package naming
Diffstat (limited to 'cheetah/TemplateCmdLineIface.py')
-rw-r--r-- | cheetah/TemplateCmdLineIface.py | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/cheetah/TemplateCmdLineIface.py b/cheetah/TemplateCmdLineIface.py new file mode 100644 index 0000000..16a90cf --- /dev/null +++ b/cheetah/TemplateCmdLineIface.py @@ -0,0 +1,107 @@ +# $Id: TemplateCmdLineIface.py,v 1.13 2006/01/10 20:34:35 tavis_rudd Exp $ + +"""Provides a command line interface to compiled Cheetah template modules. + +Meta-Data +================================================================================ +Author: Tavis Rudd <tavis@damnsimple.com> +Version: $Revision: 1.13 $ +Start Date: 2001/12/06 +Last Revision Date: $Date: 2006/01/10 20:34:35 $ +""" +__author__ = "Tavis Rudd <tavis@damnsimple.com>" +__revision__ = "$Revision: 1.13 $"[11:-2] + +import sys +import os +import getopt +import os.path +try: + from cPickle import load +except ImportError: + from pickle import load + +from Cheetah.Version import Version + +class Error(Exception): + pass + +class CmdLineIface: + """A command line interface to compiled Cheetah template modules.""" + + def __init__(self, templateObj, + scriptName=os.path.basename(sys.argv[0]), + cmdLineArgs=sys.argv[1:]): + + self._template = templateObj + self._scriptName = scriptName + self._cmdLineArgs = cmdLineArgs + + def run(self): + """The main program controller.""" + + self._processCmdLineArgs() + print self._template + + def _processCmdLineArgs(self): + try: + self._opts, self._args = getopt.getopt( + self._cmdLineArgs, 'h', ['help', + 'env', + 'pickle=', + ]) + + except getopt.GetoptError, v: + # print help information and exit: + print v + print self.usage() + sys.exit(2) + + for o, a in self._opts: + if o in ('-h','--help'): + print self.usage() + sys.exit() + if o == '--env': + self._template.searchList().insert(0, os.environ) + if o == '--pickle': + if a == '-': + unpickled = load(sys.stdin) + self._template.searchList().insert(0, unpickled) + else: + f = open(a) + unpickled = load(f) + f.close() + self._template.searchList().insert(0, unpickled) + + def usage(self): + return """Cheetah %(Version)s template module command-line interface + +Usage +----- + %(scriptName)s [OPTION] + +Options +------- + -h, --help Print this help information + + --env Use shell ENVIRONMENT variables to fill the + $placeholders in the template. + + --pickle <file> Use a variables from a dictionary stored in Python + pickle file to fill $placeholders in the template. + If <file> is - stdin is used: + '%(scriptName)s --pickle -' + +Description +----------- + +This interface allows you to execute a Cheetah template from the command line +and collect the output. It can prepend the shell ENVIRONMENT or a pickled +Python dictionary to the template's $placeholder searchList, overriding the +defaults for the $placeholders. + +""" % {'scriptName':self._scriptName, + 'Version':Version, + } + +# vim: shiftwidth=4 tabstop=4 expandtab |