实现devassistant乒乓协议的库
dapp的Python项目详细描述
用于devassistant与pingpong通信的库实现协议 脚本(也称为可执行助手)。协议规范可以在todo:link中找到。
注意,这个库同时实现了“服务器”和“客户端”。“服务器”端 只供贬值者自己使用。如果您正在考虑实现一个devassistant 对于另一种语言的乒乓库,只需要实现“客户端”。
用法
要编写一个简单的乒乓球脚本,您需要创建一个最小的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。这个 对应的乒乓球脚本必须是~/.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(指向 对象)和ctxt。ctxt是一个dict(python映射类型),它保存全局 yaml dsl的上下文(例如,如果是由用户指定的,它包含name参数 在命令行/在gui中)。
- 您可以通过调用call_command方法来利用devassistant命令[1]。这需要三个 参数-全局上下文,命令类型和命令输入。第一个是(可能修改) 传递给run方法和其他两个方法的上下文与[1]中解释的相同。
- 可以通过运行命令修改ctxtdict,检查 查看它在全局上下文中做什么以及是否修改任何内容的特定命令。
- 方法call_command返回命令的2元组-逻辑结果和结果。 同样,在[1]中记录了所有命令。
- run方法必须返回一个2元组-a逻辑结果(例如True/False)和一个 result,就像任何其他命令一样。
- 如果希望助手修改全局上下文,只需修改ctxt变量。 所有可能在yaml文件中的pingpong之后运行的命令都将看到 你所做的修改。
- 注意,要真正启动pingpong脚本,必须调用pingpong()方法 脚本类的不是方法run()。
[1]http://docs.devassistant.org/en/latest/developer_documentation/command_reference.html