Skip to content

About

$treamable commands executor

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,020 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

command-stream

JavaScript package Rust crate License GitHub stars

Command-stream provides stream-oriented shell command execution APIs in two language implementations:

  • JavaScript package: Bun and Node.js package published to npm as command-stream.
  • Rust crate: Rust library and binary published to crates.io as command-stream.

The ShellJS migration guide covers the pinned JavaScript compatibility API, Rust session API, and 26 native built-in commands.

Both implementations focus on shell-like command execution, real-time output handling, pipeline support, and cross-platform behavior. Both also include a zx-compatible API (command-stream/zx and $.zx in JavaScript, command_stream::zx in Rust); see the zx migration guide. The isolated Execa API is available as command-stream/execa and $.execa in JavaScript, with portable process counterparts in command_stream::execa and the Rust crate root. Language-specific API examples, package-manager instructions, release notes, and best practices live with each package.

Feature Guide

The generated feature guide runs every documented feature in JavaScript and Rust and captures its real output. JavaScript examples are also compared across Node.js and Bun. The same catalog powers the searchable feature website, which is verified and deployed by GitHub Actions.

Repository Layout

Path Purpose
js/ JavaScript package source, tests, docs, and CI/CD scripts.
rust/ Rust crate source, tests, docs, and CI/CD scripts.
docs/ Generated feature guide, website, and case studies.
.github/ GitHub workflow definitions and deployment notes.

Releases

JavaScript and Rust releases are independent:

  • JavaScript workflow: .github/workflows/js.yml
  • Rust workflow: .github/workflows/rust.yml
  • JavaScript GitHub release tags: js-v<version>
  • Rust GitHub release tags: rust-v<version>

Development

Both maintained language implementations carry pinned, executable competitor compatibility corpora with explicit missing-feature ledgers:

Run the focused suites with bun run test:competitors in js/ and cargo test --test competitor_compatibility in rust/.

The benchmark playgrounds provide measured process, package-footprint, feature-coverage, and deterministic real-world comparisons for both maintained implementations:

  • JavaScript benchmarks: Execa, cross-spawn, ShellJS, zx, and Bun Shell. Run bun run benchmark:smoke from js/.
  • Rust benchmarks: std::process, Tokio process, async-process, duct, subprocess, and xshell. Run the documented Cargo smoke command from rust/.

CI runs both suites and the language parity check prevents benchmark changes in only one implementation unless maintainers explicitly apply parity-exempt.

Run all language-specific checks from the language folders:

cd js
bun install
bun run test
bun run check
cd rust
cargo fmt --all -- --check
cargo clippy --all-targets --all-features
cargo test --all-features

Check dependency freshness from the repository root:

bun scripts/check-dependencies.mjs

CI compares all package, benchmark, release-script, and pinned CI-tool dependencies with the registries' latest stable releases, runs npm outdated, and rejects pending compatible updates in both Rust lockfiles. A Rust dependency may carry a blocker comment on its manifest line, for example # https://github.com/owner/repo/issues/123: explanation. The referenced issue must remain open; closed issues and lookup failures fail the check. The policy also runs weekly so new releases are detected between repository changes.

License

Command-stream is released under the Unlicense.

About

$treamable commands executor

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages