Package osh :: Package command :: Module imp
[frames] | no frames]

Source Code for Module osh.command.imp

 1  # osh 
 2  # Copyright (C) Jack Orenstein <jao@geophile.com> 
 3  # 
 4  # This program is free software; you can redistribute it and/or modify 
 5  # it under the terms of the GNU General Public License as published by 
 6  # the Free Software Foundation; either version 2 of the License, or 
 7  # (at your option) any later version. 
 8  # 
 9  # This program is distributed in the hope that it will be useful, 
10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
12  # GNU General Public License for more details. 
13  # 
14  # You should have received a copy of the GNU General Public License 
15  # along with this program; if not, write to the Free Software 
16  # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
17   
18  """C{import MODULE_NAME ...} 
19   
20  Imports modules for use by subsequent commands. Input objects are 
21  passed to the output stream. 
22  """ 
23   
24  import sys 
25   
26  import osh.args 
27  import osh.core 
28   
29  # CLI 
30 -def _imp():
31 return _Imp()
32 33 # API
34 -def imp(*module_names):
35 """Imports modules for use by subsequent commands. Input objects are passed through to 36 the output stream. 37 """ 38 return _Imp().process_args(*module_names)
39
40 -class _Imp(osh.core.Generator):
41 42 # object interface 43
44 - def __init__(self):
45 osh.core.Op.__init__(self, '', (1, None))
46 47 48 # BaseOp interface 49
50 - def doc(self):
51 return __doc__
52
53 - def setup(self):
54 args = self.args() 55 for module_name in args.remaining(): 56 exec('import %s' % module_name) 57 dot = module_name.find('.') 58 if dot < 0: 59 top_module_name = module_name 60 else: 61 top_module_name = module_name[:dot] 62 osh.core.add_to_namespace(top_module_name, locals()[top_module_name])
63
64 - def receive(self, object):
65 self.send(object)
66 67 68 # Generator interface 69
70 - def execute(self):
71 self.send(tuple()) # Have to send something
72