Add basic TreeNode

This commit is contained in:
Ian Adam Naval 2015-02-26 16:22:21 -05:00
parent 490c9f5900
commit 2e49872061
4 changed files with 17 additions and 8 deletions

View File

@ -1,5 +1,7 @@
from io import StringIO
from tree import TreeNode
class BaseCommand(object):
"""Commands can be used to chain the execution of multiple programs

View File

@ -1,5 +1,7 @@
from commands import BaseCommand, register_cmd
from tree import TreeNode
@register_cmd
class example_cmd(BaseCommand):
@ -8,8 +10,8 @@ class example_cmd(BaseCommand):
def call(self, *args, **kwargs):
def output_generator():
yield b'example'
yield b'command'
yield TreeNode(b'example')
yield TreeNode(b'command')
return output_generator
@ -26,8 +28,9 @@ class echo(BaseCommand):
input_generator = self.get_input_generator()
def output_generator():
for args in self.args:
yield args.encode("utf-8")
for line in input_generator:
yield line
yield TreeNode(args.encode("utf-8"))
for node in input_generator:
line = node.data
yield TreeNode(line)
return output_generator

View File

@ -7,6 +7,7 @@ class Printer(BaseCommand):
def call(self):
input_generator = self.get_input_generator()
for line in input_generator:
for node in input_generator:
line = node.data
print(str(line.decode('utf-8')))
return None

View File

@ -1,6 +1,8 @@
from formatters import Printer
from commands import BaseCommand
from tree import TreeNode
class RawCommand(BaseCommand):
"""Fallback raw command that just invokes an existing Unix utility program
@ -18,11 +20,12 @@ class RawCommand(BaseCommand):
p = subprocess.Popen(self.cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
def make_output_generator():
input_str = b""
for line in input_generator:
for node in input_generator:
line = node.data
input_str += line + b'\n'
outs, errs = p.communicate(input_str)
if outs:
yield outs
yield TreeNode(outs)
return make_output_generator
except: