ttw / app.py
freemt
Update app
05d53db
raw
history blame
2.22 kB
"""Talk to spaces VM via subprocess.check_output."""
# import httpx
import subprocess as sp
from shlex import split
# from textwrap import dedent
from inspect import cleandoc
import gradio as gr
from logzero import logger
from gradiobee.seg_text import seg_text
# def greet(command):
def process(command):
"""Probe vm."""
# single line: command
# logger.info("input:\n\t %s", command)
# print("print input:\n\t %s" % command)
# print("print input*:\n\t %s" % "*".join(command.splitlines()))
is_command = True
is_command = command.strip().splitlines().__len__() < 2 and len(command.strip()) < 100
if is_command:
try:
# out = sp.check_output(split(command), encoding="utf8", stderr=STDOUT)
proc = sp.Popen(
split(command), encoding="utf8", stdout=-1, stderr=-1
) # sp.PIPE: -1
out, err = proc.communicate()
sucess = True
except Exception as e:
out, err = "", str(e)
sucess = False
if sucess:
out = "\n".join(
(
out,
err,
)
).strip()
if not out:
out = "No output, that's all we know."
return out
# not is_command or not flag: text, do seg_text
_ = "\n\n".join(seg_text(command.strip()))
# _ = seg_text(command.strip())
return cleandoc(
f"""seg_text output (segmented sents):
{_}
"""
).strip()
iface = gr.Interface(
# fn=greet,
# inputs="text",
fn=process,
# inputs="text",
inputs=gr.inputs.Textbox(
lines=5,
placeholder="Type or paste input here then click 'Submit'",
default="python -m site",
label="command or multiline text",
),
outputs="text",
examples=[
"cat /proc/version",
"free # show free memory",
"uname -m",
"df -h .",
"cat /proc/cpuinfo",
"""python -c "from psutil import virtual_memory; print(virtual_memory())" """,
],
title="probe the system",
description="Talk to the system via subprocess.check_output ",
)
# iface.launch(share=True, debug=True)
iface.launch(debug=True)