mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-07 03:00:29 +00:00
Add fabro-cli help snapshots for subcommands
This commit is contained in:
parent
b0e1b5054a
commit
dc4e955f30
51 changed files with 1560 additions and 0 deletions
30
lib/crates/fabro-cli/tests/it/cmd/asset.rs
Normal file
30
lib/crates/fabro-cli/tests/it/cmd/asset.rs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["asset", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Inspect and copy run assets (screenshots, reports, traces)
|
||||
|
||||
Usage: fabro asset [OPTIONS] <COMMAND>
|
||||
|
||||
Commands:
|
||||
list List assets for a workflow run
|
||||
cp Copy assets from a workflow run
|
||||
help Print this message or the help of the given subcommand(s)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
32
lib/crates/fabro-cli/tests/it/cmd/asset_cp.rs
Normal file
32
lib/crates/fabro-cli/tests/it/cmd/asset_cp.rs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["asset", "cp", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Copy assets from a workflow run
|
||||
|
||||
Usage: fabro asset cp [OPTIONS] <SOURCE> [DEST]
|
||||
|
||||
Arguments:
|
||||
<SOURCE> Source: RUN_ID (all assets) or RUN_ID:path (specific asset)
|
||||
[DEST] Destination directory (defaults to current directory) [default: .]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--node <NODE> Filter to assets from a specific node
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--retry <RETRY> Filter to assets from a specific retry attempt
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--tree Preserve {node_slug}/retry_{N}/ directory structure
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
31
lib/crates/fabro-cli/tests/it/cmd/asset_list.rs
Normal file
31
lib/crates/fabro-cli/tests/it/cmd/asset_list.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["asset", "list", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
List assets for a workflow run
|
||||
|
||||
Usage: fabro asset list [OPTIONS] <RUN_ID>
|
||||
|
||||
Arguments:
|
||||
<RUN_ID> Run ID (or prefix)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--node <NODE> Filter to assets from a specific node
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--retry <RETRY> Filter to assets from a specific retry attempt
|
||||
--json Output as JSON
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/attach.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/attach.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["attach", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Attach to a running or finished workflow run
|
||||
|
||||
Usage: fabro attach [OPTIONS] <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID prefix or workflow name
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/config_show.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/config_show.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["config", "show", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Print the merged FabroSettings as YAML
|
||||
|
||||
Usage: fabro config show [OPTIONS] [WORKFLOW]
|
||||
|
||||
Arguments:
|
||||
[WORKFLOW] Optional workflow name, .fabro path, or .toml run config to overlay
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
39
lib/crates/fabro-cli/tests/it/cmd/create.rs
Normal file
39
lib/crates/fabro-cli/tests/it/cmd/create.rs
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["create", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Create a workflow run (allocate run dir, persist spec)
|
||||
|
||||
Usage: fabro create [OPTIONS] <WORKFLOW>
|
||||
|
||||
Arguments:
|
||||
<WORKFLOW> Path to a .fabro workflow file or .toml task config
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--dry-run Execute with simulated LLM backend
|
||||
--auto-approve Auto-approve all human gates
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--goal <GOAL> Override the workflow goal (exposed as $goal in prompts)
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--goal-file <GOAL_FILE> Read the workflow goal from a file
|
||||
--model <MODEL> Override default LLM model
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
--provider <PROVIDER> Override default LLM provider
|
||||
-v, --verbose Enable verbose output
|
||||
--sandbox <SANDBOX> Sandbox for agent tools [possible values: local, docker, daytona, ssh]
|
||||
--label <KEY=VALUE> Attach a label to this run (repeatable, format: KEY=VALUE)
|
||||
--no-retro Skip retro generation after the run
|
||||
--preserve-sandbox Keep the sandbox alive after the run finishes (for debugging)
|
||||
-d, --detach Run the workflow in the background and print the run ID
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/detached.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/detached.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["__detached", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Internal: run the engine process (reads run.json from run dir)
|
||||
|
||||
Usage: fabro __detached [OPTIONS] --run-dir <RUN_DIR> --launcher-path <LAUNCHER_PATH>
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--run-dir <RUN_DIR> Run directory
|
||||
--launcher-path <LAUNCHER_PATH> Launcher metadata path
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--resume Resume from checkpoint instead of fresh start
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
31
lib/crates/fabro-cli/tests/it/cmd/diff.rs
Normal file
31
lib/crates/fabro-cli/tests/it/cmd/diff.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["diff", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Show the diff of changes from a workflow run
|
||||
|
||||
Usage: fabro diff [OPTIONS] <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID or prefix
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--node <NODE> Show diff for a specific node
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--stat Show diffstat instead of full patch (live diffs only)
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--shortstat Show only files-changed/insertions/deletions summary (live diffs only)
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
25
lib/crates/fabro-cli/tests/it/cmd/discord.rs
Normal file
25
lib/crates/fabro-cli/tests/it/cmd/discord.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["discord", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Open the Discord community in the browser
|
||||
|
||||
Usage: fabro discord [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
25
lib/crates/fabro-cli/tests/it/cmd/docs.rs
Normal file
25
lib/crates/fabro-cli/tests/it/cmd/docs.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["docs", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Open the docs website in the browser
|
||||
|
||||
Usage: fabro docs [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
|
|
@ -1,5 +1,38 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["exec", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Run an agentic coding session
|
||||
|
||||
Usage: fabro exec [OPTIONS] <PROMPT>
|
||||
|
||||
Arguments:
|
||||
<PROMPT> Task prompt
|
||||
|
||||
Options:
|
||||
--provider <PROVIDER> LLM provider (anthropic, openai, gemini, kimi, zai, minimax, inception)
|
||||
--model <MODEL> Model name (defaults per provider)
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--permissions <PERMISSIONS> Permission level for tool execution [possible values: read-only, read-write, full]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--auto-approve Skip interactive prompts; deny tools outside permission level
|
||||
--debug Print LLM request/response debug info to stderr
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
--verbose Print full LLM request/response JSON to stderr
|
||||
--skills-dir <SKILLS_DIR> Directory containing skill files (overrides default discovery)
|
||||
--output-format <OUTPUT_FORMAT> Output format (text for human-readable, json for NDJSON event stream) [possible values: text, json]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn invalid_permissions() {
|
||||
let context = test_context!();
|
||||
|
|
|
|||
59
lib/crates/fabro-cli/tests/it/cmd/fabro.rs
Normal file
59
lib/crates/fabro-cli/tests/it/cmd/fabro.rs
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.arg("--help");
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Usage: fabro [OPTIONS] <COMMAND>
|
||||
|
||||
Commands:
|
||||
run Launch a workflow run
|
||||
create Create a workflow run (allocate run dir, persist spec)
|
||||
start Start a created workflow run (spawn engine process)
|
||||
attach Attach to a running or finished workflow run
|
||||
cp Copy files to/from a run's sandbox
|
||||
preview Get a preview URL for a port on a run's sandbox
|
||||
ssh SSH into a run's Daytona sandbox
|
||||
logs View the event log of a workflow run
|
||||
resume Resume an interrupted workflow run
|
||||
rewind Rewind a workflow run to an earlier checkpoint
|
||||
fork Fork a workflow run from an earlier checkpoint into a new run
|
||||
wait Block until a workflow run completes
|
||||
preflight Validate run configuration without executing
|
||||
validate Validate a workflow
|
||||
graph Render a workflow graph as SVG or PNG
|
||||
asset Inspect and copy run assets (screenshots, reports, traces)
|
||||
store Export store-backed run state for debugging
|
||||
rm Remove one or more workflow runs
|
||||
inspect Show detailed information about a workflow run
|
||||
model List and test LLM models
|
||||
doctor Check environment and integration health
|
||||
install Set up the Fabro environment (LLMs, certs, GitHub)
|
||||
pr Pull request operations
|
||||
secret Manage secrets in ~/.fabro/.env
|
||||
config Inspect merged configuration
|
||||
workflow Workflow operations
|
||||
discord Open the Discord community in the browser
|
||||
docs Open the docs website in the browser
|
||||
upgrade Upgrade fabro to the latest version
|
||||
repo Repository commands
|
||||
provider Provider operations
|
||||
system System maintenance commands
|
||||
help Print this message or the help of the given subcommand(s)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
-V, --version Print version
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
31
lib/crates/fabro-cli/tests/it/cmd/fork.rs
Normal file
31
lib/crates/fabro-cli/tests/it/cmd/fork.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["fork", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Fork a workflow run from an earlier checkpoint into a new run
|
||||
|
||||
Usage: fabro fork [OPTIONS] <RUN_ID> [TARGET]
|
||||
|
||||
Arguments:
|
||||
<RUN_ID> Run ID (or unambiguous prefix)
|
||||
[TARGET] Target checkpoint: node name, node@visit, or @ordinal (omit to fork from latest)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--list Show the checkpoint timeline instead of forking
|
||||
--no-push Skip pushing new branches to the remote
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
66
lib/crates/fabro-cli/tests/it/cmd/graph.rs
Normal file
66
lib/crates/fabro-cli/tests/it/cmd/graph.rs
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["graph", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Render a workflow graph as SVG or PNG
|
||||
|
||||
Usage: fabro graph [OPTIONS] <WORKFLOW>
|
||||
|
||||
Arguments:
|
||||
<WORKFLOW>
|
||||
Path to the .fabro workflow file, .toml task config, or project workflow name
|
||||
|
||||
Options:
|
||||
--debug
|
||||
Enable DEBUG-level logging (default is INFO)
|
||||
|
||||
[env: FABRO_DEBUG=]
|
||||
|
||||
--format <FORMAT>
|
||||
Output format
|
||||
|
||||
[default: svg]
|
||||
[possible values: svg, png]
|
||||
|
||||
--no-upgrade-check
|
||||
Disable automatic upgrade check
|
||||
|
||||
[env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
|
||||
-o, --output <OUTPUT>
|
||||
Output file path (defaults to stdout)
|
||||
|
||||
-d, --direction <DIRECTION>
|
||||
Graph layout direction (overrides the DOT file's rankdir)
|
||||
|
||||
Possible values:
|
||||
- lr: Left to right
|
||||
- tb: Top to bottom
|
||||
|
||||
--quiet
|
||||
Suppress non-essential output
|
||||
|
||||
[env: FABRO_QUIET=]
|
||||
|
||||
--verbose
|
||||
Enable verbose output
|
||||
|
||||
[env: FABRO_VERBOSE=]
|
||||
|
||||
--storage-dir <STORAGE_DIR>
|
||||
Storage directory (default: ~/.fabro)
|
||||
|
||||
[env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
|
||||
-h, --help
|
||||
Print help (see a summary with '-h')
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/inspect.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/inspect.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["inspect", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Show detailed information about a workflow run
|
||||
|
||||
Usage: fabro inspect [OPTIONS] <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID prefix or workflow name (most recent run)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
34
lib/crates/fabro-cli/tests/it/cmd/llm_prompt.rs
Normal file
34
lib/crates/fabro-cli/tests/it/cmd/llm_prompt.rs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["llm", "prompt", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Execute a prompt
|
||||
|
||||
Usage: fabro llm prompt [OPTIONS] [PROMPT]
|
||||
|
||||
Arguments:
|
||||
[PROMPT] The prompt text (also accepts stdin)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-m, --model <MODEL> Model to use
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
-s, --system <SYSTEM> System prompt
|
||||
--no-stream Do not stream output
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
-u, --usage Show token usage
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
-S, --schema <SCHEMA> JSON schema for structured output (inline JSON string)
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-o, --option <OPTION> key=value options (temperature, `max_tokens`, `top_p`)
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
32
lib/crates/fabro-cli/tests/it/cmd/logs.rs
Normal file
32
lib/crates/fabro-cli/tests/it/cmd/logs.rs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["logs", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @r#"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
View the event log of a workflow run
|
||||
|
||||
Usage: fabro logs [OPTIONS] <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID prefix or workflow name (most recent run)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-f, --follow Follow log output
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--since <SINCE> Logs since timestamp or relative (e.g. "42m", "2h", "2026-01-02T13:00:00Z")
|
||||
-n, --tail <TAIL> Lines from end (default: all)
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
-p, --pretty Formatted colored output with rendered assistant text
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
"#);
|
||||
}
|
||||
|
|
@ -1,19 +1,67 @@
|
|||
mod asset;
|
||||
mod asset_cp;
|
||||
mod asset_list;
|
||||
mod attach;
|
||||
mod config;
|
||||
mod config_show;
|
||||
mod cp;
|
||||
mod create;
|
||||
mod detached;
|
||||
mod diff;
|
||||
mod discord;
|
||||
mod doctor;
|
||||
mod docs;
|
||||
mod exec;
|
||||
mod fabro;
|
||||
mod fork;
|
||||
mod graph;
|
||||
mod init;
|
||||
mod inspect;
|
||||
mod install;
|
||||
mod llm;
|
||||
mod llm_prompt;
|
||||
mod logs;
|
||||
mod model;
|
||||
mod model_list;
|
||||
mod model_test;
|
||||
mod parse;
|
||||
mod preflight;
|
||||
mod pr;
|
||||
mod pr_close;
|
||||
mod pr_create;
|
||||
mod pr_list;
|
||||
mod pr_merge;
|
||||
mod pr_view;
|
||||
mod preview;
|
||||
mod provider;
|
||||
mod provider_login;
|
||||
mod ps;
|
||||
mod repo;
|
||||
mod repo_deinit;
|
||||
mod repo_init;
|
||||
mod resume;
|
||||
mod rewind;
|
||||
mod rm;
|
||||
mod run;
|
||||
mod secret;
|
||||
mod secret_get;
|
||||
mod secret_list;
|
||||
mod secret_rm;
|
||||
mod secret_set;
|
||||
mod send_analytics;
|
||||
mod send_panic;
|
||||
mod serve;
|
||||
mod ssh;
|
||||
mod start;
|
||||
mod store;
|
||||
mod store_dump;
|
||||
mod system;
|
||||
mod system_df;
|
||||
mod system_prune;
|
||||
mod top_level;
|
||||
mod upgrade;
|
||||
mod validate;
|
||||
mod wait;
|
||||
mod workflow;
|
||||
mod workflow_create;
|
||||
mod workflow_list;
|
||||
|
|
|
|||
27
lib/crates/fabro-cli/tests/it/cmd/model_list.rs
Normal file
27
lib/crates/fabro-cli/tests/it/cmd/model_list.rs
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["model", "list", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
List available models
|
||||
|
||||
Usage: fabro model list [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-p, --provider <PROVIDER> Filter by provider
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
-q, --query <QUERY> Search for models matching this string
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/model_test.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/model_test.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["model", "test", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Test model availability by sending a simple prompt
|
||||
|
||||
Usage: fabro model test [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-p, --provider <PROVIDER> Filter by provider
|
||||
-m, --model <MODEL> Test a specific model
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--deep Run a multi-turn tool-use test (catches reasoning round-trip bugs)
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/parse.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/parse.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["parse", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Parse a DOT file and print its AST
|
||||
|
||||
Usage: fabro parse [OPTIONS] <WORKFLOW>
|
||||
|
||||
Arguments:
|
||||
<WORKFLOW> Path to the .fabro workflow file
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/pr_close.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/pr_close.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["pr", "close", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Close a pull request
|
||||
|
||||
Usage: fabro pr close [OPTIONS] <RUN_ID>
|
||||
|
||||
Arguments:
|
||||
<RUN_ID> Run ID or prefix
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/pr_create.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/pr_create.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["pr", "create", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Create a pull request from a completed run
|
||||
|
||||
Usage: fabro pr create [OPTIONS] <RUN_ID>
|
||||
|
||||
Arguments:
|
||||
<RUN_ID> Run ID or prefix
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--model <MODEL> LLM model for generating PR description
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
26
lib/crates/fabro-cli/tests/it/cmd/pr_list.rs
Normal file
26
lib/crates/fabro-cli/tests/it/cmd/pr_list.rs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["pr", "list", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
List pull requests from workflow runs
|
||||
|
||||
Usage: fabro pr list [OPTIONS]
|
||||
|
||||
Options:
|
||||
--all Show all PRs (including closed/merged), not just open
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/pr_merge.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/pr_merge.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["pr", "merge", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Merge a pull request
|
||||
|
||||
Usage: fabro pr merge [OPTIONS] <RUN_ID>
|
||||
|
||||
Arguments:
|
||||
<RUN_ID> Run ID or prefix
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--method <METHOD> Merge method: merge, squash, or rebase [default: squash]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/pr_view.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/pr_view.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["pr", "view", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
View pull request details
|
||||
|
||||
Usage: fabro pr view [OPTIONS] <RUN_ID>
|
||||
|
||||
Arguments:
|
||||
<RUN_ID> Run ID or prefix
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
33
lib/crates/fabro-cli/tests/it/cmd/preflight.rs
Normal file
33
lib/crates/fabro-cli/tests/it/cmd/preflight.rs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["preflight", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Validate run configuration without executing
|
||||
|
||||
Usage: fabro preflight [OPTIONS] <WORKFLOW>
|
||||
|
||||
Arguments:
|
||||
<WORKFLOW> Path to a .fabro workflow file or .toml task config
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--goal <GOAL> Override the workflow goal (exposed as $goal in prompts)
|
||||
--goal-file <GOAL_FILE> Read the workflow goal from a file
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--model <MODEL> Override default LLM model
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--provider <PROVIDER> Override default LLM provider
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-v, --verbose Enable verbose output
|
||||
--sandbox <SANDBOX> Sandbox for agent tools [possible values: local, docker, daytona, ssh]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/provider.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/provider.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["provider", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Provider operations
|
||||
|
||||
Usage: fabro provider [OPTIONS] <COMMAND>
|
||||
|
||||
Commands:
|
||||
login Log in to an LLM provider
|
||||
help Print this message or the help of the given subcommand(s)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
26
lib/crates/fabro-cli/tests/it/cmd/provider_login.rs
Normal file
26
lib/crates/fabro-cli/tests/it/cmd/provider_login.rs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["provider", "login", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Log in to an LLM provider
|
||||
|
||||
Usage: fabro provider login [OPTIONS] --provider <PROVIDER>
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--provider <PROVIDER> LLM provider to authenticate with
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
31
lib/crates/fabro-cli/tests/it/cmd/ps.rs
Normal file
31
lib/crates/fabro-cli/tests/it/cmd/ps.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["ps", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
List workflow runs
|
||||
|
||||
Usage: fabro ps [OPTIONS]
|
||||
|
||||
Options:
|
||||
--before <BEFORE> Only include runs started before this date (YYYY-MM-DD prefix match)
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--workflow <WORKFLOW> Filter by workflow name (substring match)
|
||||
--label <KEY=VALUE> Filter by label (KEY=VALUE, repeatable, AND semantics)
|
||||
--orphans Include orphan directories (no run.json)
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--json Output as JSON
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-a, --all Show all runs, not just running (like docker ps -a)
|
||||
-q, --quiet Only display run IDs
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
25
lib/crates/fabro-cli/tests/it/cmd/repo_deinit.rs
Normal file
25
lib/crates/fabro-cli/tests/it/cmd/repo_deinit.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["repo", "deinit", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Remove fabro.toml and fabro/ directory
|
||||
|
||||
Usage: fabro repo deinit [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
25
lib/crates/fabro-cli/tests/it/cmd/repo_init.rs
Normal file
25
lib/crates/fabro-cli/tests/it/cmd/repo_init.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["repo", "init", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Initialize a new project
|
||||
|
||||
Usage: fabro repo init [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/resume.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/resume.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["resume", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Resume an interrupted workflow run
|
||||
|
||||
Usage: fabro resume [OPTIONS] <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID or unambiguous prefix
|
||||
|
||||
Options:
|
||||
-d, --detach Run in the background and print the run ID
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
31
lib/crates/fabro-cli/tests/it/cmd/rewind.rs
Normal file
31
lib/crates/fabro-cli/tests/it/cmd/rewind.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["rewind", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Rewind a workflow run to an earlier checkpoint
|
||||
|
||||
Usage: fabro rewind [OPTIONS] <RUN_ID> [TARGET]
|
||||
|
||||
Arguments:
|
||||
<RUN_ID> Run ID (or unambiguous prefix)
|
||||
[TARGET] Target checkpoint: node name, node@visit, or @ordinal (omit with --list)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--list Show the checkpoint timeline instead of rewinding
|
||||
--no-push Skip force-pushing rewound refs to the remote
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/rm.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/rm.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["rm", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Remove one or more workflow runs
|
||||
|
||||
Usage: fabro rm [OPTIONS] <RUNS>...
|
||||
|
||||
Arguments:
|
||||
<RUNS>... Run IDs or workflow names to remove
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-f, --force Force removal of active runs
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/secret_get.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/secret_get.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["secret", "get", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Get a secret value
|
||||
|
||||
Usage: fabro secret get [OPTIONS] <KEY>
|
||||
|
||||
Arguments:
|
||||
<KEY> Name of the secret
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
26
lib/crates/fabro-cli/tests/it/cmd/secret_list.rs
Normal file
26
lib/crates/fabro-cli/tests/it/cmd/secret_list.rs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["secret", "list", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
List secret names
|
||||
|
||||
Usage: fabro secret list [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--show-values Show values alongside keys
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/secret_rm.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/secret_rm.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["secret", "rm", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Remove a secret
|
||||
|
||||
Usage: fabro secret rm [OPTIONS] <KEY>
|
||||
|
||||
Arguments:
|
||||
<KEY> Name of the secret to remove
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/secret_set.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/secret_set.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["secret", "set", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Set a secret value
|
||||
|
||||
Usage: fabro secret set [OPTIONS] <KEY> <VALUE>
|
||||
|
||||
Arguments:
|
||||
<KEY> Name of the secret
|
||||
<VALUE> Value to store
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/send_analytics.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/send_analytics.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["__send_analytics", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Send a queued analytics event (internal)
|
||||
|
||||
Usage: fabro __send_analytics [OPTIONS] <PATH>
|
||||
|
||||
Arguments:
|
||||
<PATH> Path to the JSON event file
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/send_panic.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/send_panic.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["__send_panic", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Send a queued panic event to Sentry (internal)
|
||||
|
||||
Usage: fabro __send_panic [OPTIONS] <PATH>
|
||||
|
||||
Arguments:
|
||||
<PATH> Path to the JSON event file
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/start.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/start.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["start", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Start a created workflow run (spawn engine process)
|
||||
|
||||
Usage: fabro start [OPTIONS] <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID prefix or workflow name
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/store.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/store.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["store", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Export store-backed run state for debugging
|
||||
|
||||
Usage: fabro store [OPTIONS] <COMMAND>
|
||||
|
||||
Commands:
|
||||
dump Export a run's durable state to a directory
|
||||
help Print this message or the help of the given subcommand(s)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
29
lib/crates/fabro-cli/tests/it/cmd/store_dump.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/store_dump.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["store", "dump", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Export a run's durable state to a directory
|
||||
|
||||
Usage: fabro store dump [OPTIONS] --output <OUTPUT> <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID prefix or workflow name
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-o, --output <OUTPUT> Output directory (must not exist or be empty)
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
25
lib/crates/fabro-cli/tests/it/cmd/system_df.rs
Normal file
25
lib/crates/fabro-cli/tests/it/cmd/system_df.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["system", "df", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Show disk usage
|
||||
|
||||
Usage: fabro system df [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-v, --verbose Show per-run breakdown
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
31
lib/crates/fabro-cli/tests/it/cmd/system_prune.rs
Normal file
31
lib/crates/fabro-cli/tests/it/cmd/system_prune.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["system", "prune", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Delete old workflow runs
|
||||
|
||||
Usage: fabro system prune [OPTIONS]
|
||||
|
||||
Options:
|
||||
--before <BEFORE> Only include runs started before this date (YYYY-MM-DD prefix match)
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--workflow <WORKFLOW> Filter by workflow name (substring match)
|
||||
--label <KEY=VALUE> Filter by label (KEY=VALUE, repeatable, AND semantics)
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--orphans Include orphan directories (no run.json)
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--older-than <DURATION> Only prune runs older than this duration (e.g. 24h, 7d). Default: 24h when no explicit filters are set
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
--yes Actually delete (default is dry-run)
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
28
lib/crates/fabro-cli/tests/it/cmd/upgrade.rs
Normal file
28
lib/crates/fabro-cli/tests/it/cmd/upgrade.rs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["upgrade", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @r#"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Upgrade fabro to the latest version
|
||||
|
||||
Usage: fabro upgrade [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--version <VERSION> Target version (e.g. "0.5.0" or "v0.5.0")
|
||||
--force Upgrade even if already on the target version
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--dry-run Preview what would happen without making changes
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
"#);
|
||||
}
|
||||
31
lib/crates/fabro-cli/tests/it/cmd/wait.rs
Normal file
31
lib/crates/fabro-cli/tests/it/cmd/wait.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["wait", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Block until a workflow run completes
|
||||
|
||||
Usage: fabro wait [OPTIONS] <RUN>
|
||||
|
||||
Arguments:
|
||||
<RUN> Run ID prefix or workflow name (most recent run)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--timeout <SECONDS> Maximum time to wait in seconds
|
||||
--interval <MS> Poll interval in milliseconds [default: 1000]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--json Output conclusion as JSON
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
|
|
@ -1,5 +1,34 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["workflow", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Workflow operations
|
||||
|
||||
Usage: fabro workflow [OPTIONS] <COMMAND>
|
||||
|
||||
Commands:
|
||||
list List available workflows
|
||||
create Create a new workflow
|
||||
help Print this message or the help of the given subcommand(s)
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn list() {
|
||||
let context = test_context!();
|
||||
|
|
|
|||
29
lib/crates/fabro-cli/tests/it/cmd/workflow_create.rs
Normal file
29
lib/crates/fabro-cli/tests/it/cmd/workflow_create.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["workflow", "create", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
Create a new workflow
|
||||
|
||||
Usage: fabro workflow create [OPTIONS] <NAME>
|
||||
|
||||
Arguments:
|
||||
<NAME> Name of the workflow
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
-g, --goal <GOAL> Goal description for the workflow
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
25
lib/crates/fabro-cli/tests/it/cmd/workflow_list.rs
Normal file
25
lib/crates/fabro-cli/tests/it/cmd/workflow_list.rs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
use fabro_test::{fabro_snapshot, test_context};
|
||||
|
||||
#[test]
|
||||
fn help() {
|
||||
let context = test_context!();
|
||||
let mut cmd = context.command();
|
||||
cmd.args(["workflow", "list", "--help"]);
|
||||
fabro_snapshot!(context.filters(), cmd, @"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
List available workflows
|
||||
|
||||
Usage: fabro workflow list [OPTIONS]
|
||||
|
||||
Options:
|
||||
--debug Enable DEBUG-level logging (default is INFO) [env: FABRO_DEBUG=]
|
||||
--no-upgrade-check Disable automatic upgrade check [env: FABRO_NO_UPGRADE_CHECK=true]
|
||||
--quiet Suppress non-essential output [env: FABRO_QUIET=]
|
||||
--verbose Enable verbose output [env: FABRO_VERBOSE=]
|
||||
--storage-dir <STORAGE_DIR> Storage directory (default: ~/.fabro) [env: FABRO_STORAGE_DIR=[STORAGE_DIR]]
|
||||
-h, --help Print help
|
||||
----- stderr -----
|
||||
");
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue