2 个不稳定版本
0.2.0 | 2023 年 4 月 16 日 |
---|---|
0.1.0 | 2023 年 4 月 16 日 |
#91 在 机器人
38KB
781 行
botwork
botwork 是一个单二进制、通用和开源的自动化框架,用 Rust 编写,用于验收测试、验收测试驱动开发(ATDD)和机器人流程自动化(RPA)。语法基本上是纯文本(任何人类语言)与参数。易于使用 Rust、Python 和 JavaScript 扩展。是 Robot Framework 的有效、快速的替代品。
为什么是 botwork?
我已经使用 RobotFramework 几年了。虽然它是一个非常棒的框架,但我对其中的一些事情并不太喜欢
- 它基本上需要 Python(和虚拟环境)来运行。这意味着,它需要更多的空间(例如在构建容器镜像时)并且消耗大量的内存(Python 是我生命中的最爱,但它是慢的且资源密集型)。
- 语法可以更加简单。例如,两个(或更多)空格作为分隔符,
${}
,@{}
等。变量的使用让刚接触框架的人感到困惑。 - 它主要只能用 Python 来扩展。
我想要
- 一个高效、快速的单二进制工具。
- 比 RobotFramework 更简单的语法。
- 可以用 Rust、Python(通过 PyO3)、JavaScript(通过 neon)等扩展。
- 使用 PEG 解析器的正确语言定义。
- LSP 和 TreeSitter 支持。
- 最重要的是,要有一个乐趣,可以介绍给我的孩子们。
入门
- 克隆仓库
- 运行
cargo run -- --file examples/02-syntaxes.botwork
或者你可以创建以下示例代码中的文件,并将路径传递给 cargo run
示例代码
以下是一个botwork脚本可能的样子
# Declaration
What is square-root of |number| divided by |divisor| equals, eh?!... {
|square| = |number ^ 2|
Return |square/divisor|
Log |"This statement will never execute"|
}
# Invocation (case-insensitive)
|answer| = WHAT is sQuAre-RoOt of |6| divided by|2|equals, EH?!...
Log |"Here is your answer:"|
Log |answer|
1.0版本路线图
botwork才刚开始。还有很多事情要做,不言而喻,语法和API将随时改变。更不用说周末我设法运行起来的hacy代码了。想法是让它进入野外,看看人们是否对这样的工具感兴趣。
如果对botwork这样的工具感兴趣,我计划投入更多时间来实现1.0版本。所以这里有在botwork被标记为1.0之前需要完成的一堆事情
- 基本语法
- 语句
- if条件
- for & while循环
- 基本算术和逻辑操作
- 数据类型:int,float,string,bool,array,map
- try/Catch
- 自定义语句
- 导入(其他botwork文件、wasm文件、包;本地或从URL)
- 文档
- README
- 入门文档
- 语法文档
- 语句文档
- 提供更多开箱即用的语句(如RobotFramework提供的)
- 集成
- Selenium/Webdriver
- Appium
- Playwirght
- 报告
- 控制台报告
- JSON报告
- HTML报告
- 报告监听器
- 工具
- LSP支持
- 编辑器支持(主要:Helix/Vim/VS Code)
- TreeSitter语法
- 代码检查
- 可信和验证注册表(用于botwork包)
- Python扩展支持(通过pyo3)
- JavaScript扩展支持(通过neon)
- WASM扩展支持(通过WASI)
- 命令行界面
- 从命令行/文件传递变量
- 并行运行
- 完全异步、非阻塞操作
- 重构我的糟糕代码 :P
- 单元测试至少覆盖50%
依赖关系
~4MB
~77K SLoC