一、工程概述
该插件提供 Fiber Starlark 脚本编写的能力支持,提供 local
与 provisioner
文件对比、快速部署等能力。
主要功能:
- Starlark 代码高亮;
- Fiber builtin go func 函数的 Hover 提示、代码提示、参数提示、代码补全;
- 支持 provisioner 的「快速部署」、「快速卸载」等功能
- 本地执行、Debug starlark 脚本;(TODO)
- 执行数据 Mock 服务;(TODO)
- 脚本语法检测/纠错能力;(TODO)
- pylint 代码检查 (支持 starlark 语法);(TODO)
二、如何使用
- 安装插件
- 在适当目录下创建
.provisioner
文件
- 打开/新建 Starlark 文件
- 使用演示:
代码补全
.provisioner 及「刷新脚本状态」
三、.provisioner 文件
- 文件所在目录
在「刷新脚本状态」时, 会统一处理
.provisioner
所在目录(记为 root
), 且会遍历该目录下所有 .star
文件, 文件以名称进行区别, 会忽略 root
下的子目录层级。
- 文件格式
采用 yaml 语法进行文件编辑, 样例如下:
ns:
- namespace: <namespace1 英文名称>
env: 正式环境|预发布环境|测试环境
- namespace: <namespace2 英文名称>
env: 正式环境
user: <rtx>
ns( namespaces )
ns 定义了 provisioner
上命名空间数组, 通过 env
, namespace
联合指定一个命名空间. 在显示 PROVISIONER
窗口时, root
目录与某个命名空间的对比会组成该床空下的一个目录。
env 和 namespace
其中 env 取值为枚举,仅支持 正式环境|预发布环境|测试环境
. namespace 需要在相应环境下预创建, 在 .provisioner
文件中仅支持填写 项目英文名
.
<TODO 新增样例图>
user
指明了 root
目录的编辑者, 在后续进行部署、卸载等操作时, 将使用该身份进行操作.
四、PROVISIONER 文件状态
Remote 指代 provisioner 相应命名空间下的文件, Local 指代本地文件
- Unmodify
has Remote && has Local && Remote == Local && Remote Deployed
- UnDeploy
has Remote && has Local && Remote == Local && Remote UnDeployed
- Modify
has Remote && has Local && Remote != Local && Remote Deployed
- Modify & UnDeploy
has Remote && has Local && Remote != Local && Remote UnDeployed
- Delete
has Remote && no Local && Remote Deployed
- Ignore
has Remote && no Local && Remote UnDeployed
- Add
no Remote && has Local
五、操作
- 刷新脚本状态
- 清理脚本状态
- 快速部署
- 快速卸载
- 差异对比
- 删除脚本
- 部署脚本
六、trigger 信息
- 什么是 trigger 信息?
star
脚本保存到 provisioner 上, 还需要 trigger
信息才能完成部署. 通过 trigger
信息指明了 star
脚本会被怎样的事件进行驱动.
trigger 是 json 格式的.
样例
{
"event_code": "evt_cron/ifttt_timer/notify",
"locator": {
"id": "aaa0-0-register_flow_node.star"
}
}
- 使用变量
目前支持的变量列表为: namespace
(含义: provisioner 命名空间的英文名), 使用变量的样例如下:
{
"locator": {
"eventCode": "evt_workflow/node/approvalStart",
"actionType": "liveProtectHaveSrcStart",
"namespace": "${namespace}"
},
"event_code": "event_pattern_filter"
}
- 从
star
脚本中解析 trigger
信息
trigger
信息在 star
脚本中是可选的. 如果在 star
脚本中设置 trigger
信息, 请按照如下样例进行编写:
'''
脚本部署 locator
{
"locator": {
"eventCode": "evt_workflow/node/approvalStart",
"actionType": "liveProtectHaveSrcStart",
"namespace": "${namespace}"
},
"event_code": "event_pattern_filter"
}
'''
def filter():
...
从 star
脚本中解析 trigger
信息的步骤: 1. 解析文件开头用 '''
定义的注释内容; 2. 在注释内容中解析第一个 {
与最后一个 }
之间的内容; 3. 进行变量替换; 4. 验证替换后的字符串是一个合法的 json
经过上述4步, 得到的字符串就是提取出的 trigger
信息.
- 「快速部署」时 trigger 信息的优先级
优先使用 provisioner 上的 trigger(与 star
脚本状态无关). 若 provisioner 上没有 trigger 信息, 则使用 star 脚本中解析出的 trigger 信息
七、注意事项
- 确保 VSCode 版本在 1.52.0 或以上。
八、如何启动
npm run watch-web
npm run run-in-browser