Add basic TreeNode
This commit is contained in:
parent
490c9f5900
commit
2e49872061
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
Reference in New Issue
Block a user