实现DevAssistant PingPong协议的库
项目描述
实现用于DevAssistant和PingPong脚本(即可执行助手)之间通信的协议的库。协议规范可在 TODO:link 找到。
请注意,此库实现了“服务器”和“客户端”两方。只有DevAssistant本身使用“服务器”方。如果您正在考虑为另一种语言实现DevAssistant PingPong库,您只需要实现“客户端”。
用法
要编写一个简单的PingPong脚本,您需要创建一个最小的Yaml助手,该助手指定了元数据,运行PingPong脚本(在这种情况下是一个Python 3脚本)所需的依赖项
fullname: PingPong script example description: A simple PingPong script using DevAssistant PingPong protocol dependencies: # TODO: once dapp library is on PyPI/packaged in Fedora, it should also be added to list of deps - rpm: [python3] args: name: flags: [-n, --name] help: Please provide your name. files: script: &script source: script.py run: - pingpong: python3 *script
假设上述助手是 ~/.devassistant/assistants/crt/test.yaml。相应的PingPong脚本必须是 ~/.devassistant/files/crt/test/script.py,可以看起来像这样
#!/usr/bin/python3 import dapp class MyScript(dapp.DAPPClient): def run(self, ctxt): if 'name' in ctxt: name = ctxt['name'].capitalize() else: name = 'Stranger' self.call_command(ctxt, 'log_i', 'Hello {n}!'.format(n=name)) return (True, 'I greeted him!') if __name__ == '__main__': MyScript().pingpong()
注意事项
PingPong脚本类必须继承 dapp.DAPPClient。
run 方法必须接受两个参数,self(指向对象的Python特定参数)和ctxt。ctxt是一个字典(Python映射类型),它包含Yaml DSL的全局上下文(例如,如果用户在命令行/ GUI中指定了name参数,它包含该参数)。
您可以通过调用 call_command 方法利用DevAssistant命令[1]。这需要三个参数 - 全局上下文,命令类型 和 命令输入。第一个是(可能已修改的)传递给run方法的上下文,其他两个与[1]中解释的相同。
在运行命令时,ctxt 字典可能会被修改,请检查每个特定命令的文档,以了解其功能以及是否会在全局范围内修改任何内容。
call_command 方法返回一个 2-元组 - 逻辑结果 和 命令结果。同样,所有命令都已在 [1] 中进行文档记录。
run 方法必须返回一个 2-元组 - 一个 逻辑结果(例如 True/False)和一个 结果,就像任何其他命令一样。
如果您想使助手修改全局上下文,只需修改 ctxt 变量。然后,在 Yaml 文件中运行 pingpong 后的所有命令都将看到您所做的所有修改。
注意,要实际启动 PingPong 脚本,您必须调用脚本类的 pingpong() 方法,而不是 run() 方法。
[1] http://docs.devassistant.org/en/latest/developer_documentation/command_reference.html
项目详情
dapp-0.3.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ff69da1f3f562db7a000b1a492bbfcedbc104c020c33e22540df7deb9b0709d0 |
|
MD5 | b0ef41b04cac206a888de7c29adf3c26 |
|
BLAKE2b-256 | 229b641450341fa0033cba8689a8c8bd827f761a28c19ef3a85946fcf0ba6fac |