Example #1
0
File: main.py Project: rootAir/pysh
def main():
    if len(sys.argv) < 2:
        usage_exit()
    if sys.argv[1] == '-':
        reader = sys.stdin
        writer = StringIO.StringIO()
        Converter(RoughLexer(reader), writer).convert(False)
        argv = sys.argv[2:]
        os.execlp('python', 'python', '-c', writer.getvalue(), *argv)
    elif sys.argv[1] == '-c':
        if len(sys.argv) < 3:
            usage_exit()
        reader = StringIO.StringIO(sys.argv[2])
        writer = StringIO.StringIO()
        Converter(RoughLexer(reader), writer).convert(False)
        argv = sys.argv[3:]
        os.execlp('python', 'python', '-c', writer.getvalue(), *argv)
    else:
        script = sys.argv[1]
        name, ext = os.path.splitext(script)
        if ext == ".py":
            print >> sys.stderr, 'An input file shoundn\'t be *.py.'
            sys.exit(1)
        py = name + '.py'
        reader = file(script, 'r')
        writer = file(py, 'w')
        Converter(RoughLexer(reader), writer).convert(True)
        writer.close()
        argv = sys.argv[2:]
        os.execlp('python', 'python', py, *argv)
Example #2
0
def read_and_rewrite(path):
  try:
    content = file(path, 'r').read()
    lexer = RoughLexer(StringIO(content))
    io = StringIO()
    converter = Converter(lexer, io, run_funcname='zsh.run')
    converter.convert(False)
    return io.getvalue()
  except:
    return None
Example #3
0
def scan_and_convert():
  lexer = ZshRoughLexer()
  tokens = []
  for token in lexer:
    indent = token[0]
    if not indent and token[1] == 'python' and is_python_expr(token[2]):
      token = (token[0], token[1], 'print ' + token[2])
    tokens.append(token)
    if not indent and zsh.native.cvar.curindentwidth == 0:
      break
  io = StringIO()
  converter = Converter(tokens, io, run_funcname='zsh.run')
  converter.convert(False)
  return io.getvalue()
Example #4
0
 def testExtractResponseNames_InAssignCmd(self):
   converter = Converter(None, None)
   names = converter.extractResponseNames(
     '(echo foo -> bar && echo baz => qux) -> piyo')
   self.assertEquals(['bar', 'qux', 'piyo'], names)
Example #5
0
 def testExtractResponseNames_InBinaryOp(self):
   converter = Converter(None, None)
   names = converter.extractResponseNames('echo foo -> bar && echo baz => qux')
   self.assertEquals(['bar', 'qux'], names)
Example #6
0
 def testExtractResponseNames_Redirection(self):
   converter = Converter(None, None)
   names = converter.extractResponseNames('echo foo => bar')
   self.assertEquals(['bar'], names)