91 lines
1.5 KiB
Python
Executable File
91 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import asyncio
|
|
|
|
from falyx import Action, ChainedAction, Falyx
|
|
from falyx.action import ShellAction
|
|
from falyx.hook_manager import HookType
|
|
from falyx.hooks import ResultReporter
|
|
from falyx.utils import setup_logging
|
|
|
|
# Setup logging
|
|
setup_logging()
|
|
|
|
|
|
fx = Falyx("🚀 Falyx Demo")
|
|
|
|
e = ShellAction("Shell", "echo Hello, {}!")
|
|
|
|
fx.add_command(
|
|
key="R",
|
|
description="Echo a message",
|
|
action=e,
|
|
)
|
|
|
|
s = ShellAction("Ping", "ping -c 1 {}")
|
|
|
|
fx.add_command(
|
|
key="P",
|
|
description="Ping a host",
|
|
action=s,
|
|
)
|
|
|
|
|
|
async def a1(last_result):
|
|
return f"Hello, {last_result}"
|
|
|
|
|
|
async def a2(last_result):
|
|
return f"World! {last_result}"
|
|
|
|
|
|
reporter = ResultReporter()
|
|
|
|
a1 = Action("a1", a1, inject_last_result=True)
|
|
a1.hooks.register(
|
|
HookType.ON_SUCCESS,
|
|
reporter.report,
|
|
)
|
|
a2 = Action("a2", a2, inject_last_result=True)
|
|
a2.hooks.register(
|
|
HookType.ON_SUCCESS,
|
|
reporter.report,
|
|
)
|
|
|
|
|
|
async def normal():
|
|
print("Normal")
|
|
return "Normal"
|
|
|
|
|
|
async def annotate(last_result):
|
|
return f"Annotated: {last_result}"
|
|
|
|
|
|
async def whisper(last_result):
|
|
return last_result.lower()
|
|
|
|
|
|
c1 = ChainedAction(
|
|
name="ShellDemo",
|
|
actions=[
|
|
# host,
|
|
ShellAction("Ping", "ping -c 1 {}"),
|
|
Action("Annotate", annotate),
|
|
Action("Whisper", whisper),
|
|
],
|
|
auto_inject=True,
|
|
)
|
|
|
|
fx.add_command(
|
|
key="C",
|
|
description="Run a chain of actions",
|
|
action=c1,
|
|
)
|
|
|
|
|
|
async def main():
|
|
await fx.run()
|
|
|
|
|
|
asyncio.run(main())
|