实现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 |