Files
wrkflw/crates
bahdotsh 9d858fdd84 fix(validators): reject non-mapping env values in validate
It turns out that `wrkflw validate` was happily accepting
`env: VAR=value` — a bare string — when GitHub Actions *only*
allows mappings for env. The reason is that the validate path
(evaluate_workflow_file) runs its own structural validators
but never actually checks the type of env fields. The JSON
schema gets it right, but it's only wired up in the parser
path, not the validator.

Add a validate_env() helper that checks env is either a YAML
mapping or an expression string (${{ }}), and wire it into
all three levels: top-level, job-level, and step-level. Tests
included for each.

Closes #89
2026-04-06 21:39:46 +05:30
..
2025-09-05 08:22:15 +05:30

Wrkflw Crates

This directory contains the Rust crates that make up the wrkflw workspace.

Crate Structure

Crate Purpose
wrkflw CLI binary and library entry point
executor Workflow execution engine (Docker, Podman, emulation)
parser Workflow file parsing and JSON Schema validation
evaluator Structural evaluation of workflow files
validators Validation rules for jobs, steps, triggers, matrix
runtime Container management and emulation runtime
ui Terminal user interface (ratatui-based)
models Shared data structures (ValidationResult, GitLab models)
matrix Matrix expansion (include, exclude, fail-fast)
secrets Secrets management with multiple providers and encryption
github GitHub API integration (list/trigger workflows)
gitlab GitLab API integration (trigger pipelines)
logging Thread-safe in-memory logging for TUI/CLI
utils Workflow file detection and fd redirection helpers

Building

# Build everything
cargo build

# Build a specific crate
cargo build -p wrkflw-executor

Testing

# Run all tests
cargo test

# Run tests for a specific crate
cargo test -p wrkflw-executor

Each crate has its own Cargo.toml with dependencies managed through workspace inheritance in the root Cargo.toml.