[TransWarp] input-driven application
Phillip J. Eby
pje at telecommunity.com
Fri May 16 19:40:02 EDT 2003
At 11:03 PM 5/16/03 +0300, alexander smishlajev wrote:
>perhaps. there is no problem with complete application assembling the
>whole chain: as far as i understand, the main component may just pass
>file-like objects as a keyword arguments of the AbstractCommand
>constructor for ILC and OLC objects.
>
>but since those ILC and OLC objects are theoretically runnable by
>themselves from the command line, i'd like to have some machinery allowing
>to run them via 'peak' bootstrapper, with 'linkin' and 'linkout' given in
>commandline options as either disk files or (in shells more advanced than
>command.com) file descriptor numbers.
Ah. Well, then the thing to do is to define the 'linkin' or 'linkout' as
Once bindings that figure out what they should be linked to, by parsing
command line options supplied in self.argv. Sort of like this:
class ILC(commands.AbstractCommand):
def parsedArgs(self,d,a):
# code that parses 'self.argv' and returns
# a dictionary of argument info, optionally
# getting default values from peak.config properties
parsedArgs = binding.Once(parsedArgs)
def linkin(self,d,a):
return open(self.parsedArgs['linkin_file'],'r')
linkin = binding.Once(linkin)
Now, if your 'linkin' attribute hasn't been assigned by the time it's
needed, the linkin method will run, calling the parsedArgs method if it
hasn't been invoked (or overridden by the creating application), and voila,
everything's ready to go.
I would actually like to supply a default mechanism at some point for doing
all this, but I haven't really needed it myself yet. So I'm not sure if
I'd rather use getopt or optparse, but I do know I'd like for subclasses to
automatically inherit options defined in superclasses, unless
overridden. Anyway, there are many considerations to look at in adding
such a thing to the framework, but for a specific application certainly you
can take your pick and use whatever argument parsing mechanism you like.
More information about the PEAK
mailing list