简体中文
English 简体中文 繁體中文
Methodox 首页

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。