繁體中文
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。