Stewer
Stewer 是 Divooka 文档的命令行启动器。它可以直接从终端、脚本、CI/CD 流水线或操作系统调度程序运行 Divooka 文档——二进制 .dvk、DiDS JSON .json 或 Divooka 应用包 .dvb——而无需打开 Divooka 图编辑器。Stewer 以与编辑器相同的方式打开文档,向其传入所提供的输入,以与编辑器的 Run(运行)相同的方式运行它,并返回标准退出代码(成功时为 0,失败时为非 0)。
安装
随 Divooka Compute 捆绑提供 Stewer 随 Divooka Compute 一起提供:
stew.exe位于其安装文件夹中。Divooka Compute 自带的 Terminal 标签页会将该文件夹放在PATH的最前面,因此在那里可以直接按名称使用stew;参见导出程序。Docker Hub 如果你更喜欢在容器化环境中运行 Stewer,可以从 Docker Hub 拉取官方镜像:
docker pull methodox/stew拉取后,可以通过以下方式调用 Stewer:
docker run --rm -v /path/to/graphs:/graphs methodox/stew stew /graphs/MyGraph.dvk
基本用法
运行 Divooka 文档最简单的方式是:
stew <document> [inputs...]
<document>文档的文件系统路径,例如Graphs/ImportSalesData.dvk。[inputs...](可选) 为文档的入口图所声明的内容提供的值——Function 的输入、Routine 的 Begin——按声明顺序排列。省略的值将采用其声明的默认值;包含空格的值请加引号。例如,如果入口图接受单个文本输入(例如一个 CSV 文件路径),你可以运行:stew Graphs/ImportSalesData.dvk "C:\Data\sales_2025_06_01.csv"
如果入口图没有声明任何输入(Events 图或 Flows 图),则文档后面的所有内容都将作为程序的参数传给它。
文档默认以编译方式运行——先构建为程序,与编辑器的 Compiled 运行相同——除非使用 --mode interpreted 要求逐个节点运行,与编辑器的 Interpreted 运行相同。--mode nri 使用 NRI(不借助反射运行的解释器)运行文档,通过 Divooka Compute 随其包一同提供的 NRI 绑定来实现:它比解释运行启动更快、占用内存更少。对于 NRI 无法完整运行的文档——使用了尚无 NRI 绑定的包,或是会打开窗口的程序——会在任何内容运行之前被拒绝,并用一行说明它无法运行什么;stew 永远不会回退到其他模式。
命令行选项
运行 stew --help 会显示全局用法和选项,其开头几行如下:
stew 0.8.0: runs a Divooka document from the command line.
Usage:
stew [--mode interpreted|nri|compiled] [--measure] <document> [inputs...]
stew --help [<document>]
stew --version
stew --packages
stew --serve <document> <output folder>
stew --pack <document|folder> [bundle.dvb]
--measure在运行结束后,于标准错误输出中报告每个阶段的耗时和资源使用情况。--packages加载 stew 旁边的发行版,并报告其中的包和 NRI 绑定。--serve保持文档处于打开状态,每从标准输入读取一个行块就运行一次,并将每次的输出写入输出文件夹中的一个文件。--pack将文档及其所在文件夹中的所有文件打包为 Divooka 应用包:文档变为entry.dvk,其余文件保持原有路径。如果未指定应用包名称,则会在该文件夹旁边写入<folder>.dvb。应用包的运行方式与文档相同。
查看图的输入
要查看一次运行从哪个图开始以及它接受哪些输入,请使用:
stew --help <document>
Stewer 会直接从文件中读取这些信息,无需加载发行版,并按以下格式打印:
Mandelbrot.dvk runs 'Graph' (Routine).
Inputs (in declaration order):
Width: Number (Double), default 80
Height: Number (Double), default 80
MaxIteration: Number (Double), default 80
To run it:
stew Examples/Benchmarks/Mandelbrot.dvk
stew Examples/Benchmarks/Mandelbrot.dvk 80 80 80
stew --mode interpreted Examples/Benchmarks/Mandelbrot.dvk
- 每个输入的名称
- 它的类型
- 它的默认值,在省略该输入时使用
了解这一签名后,你可以构建包装脚本,在调用 Stewer 之前对输入值进行验证或转换。
退出代码
0– 文档运行到了结束;Stewer 列出入口图返回的内容。1– 文档无法打开、格式错误,或运行失败;Stewer 打印失败信息。2– 命令行有误。130– 运行被Ctrl+C中止。第一次按Ctrl+C会以与编辑器的 Stop 相同的方式停止运行;第二次按则立即结束进程。
你可以在调用后立即检查 $?(在类 UNIX 系统上)或 $LASTEXITCODE(在 PowerShell 中),以检测失败并触发相应的错误处理。
相关资源
- 导出程序——运行、打包和分发在 Divooka Compute 中编写的文档。
- Docker Hub: methodox/stew 托管最新 Stewer 版本的容器镜像,适用于基于 Linux 的环境。请访问 Docker Hub。