rtb-app 0.9.1

Application context, tool metadata, runtime features, and the Command plugin trait. Part of the phpboyscout Rust toolkit.
Documentation

rtb-app

Part of the phpboyscout Rust toolkit — small, framework-free crates extracted from rust-tool-base.

A two-crate family workspace sharing one version line:

  • rtb-app — the application context (App), tool metadata, runtime features, and the Command plugin trait with its BUILTIN_COMMANDS link-time registry. The structural heart of the framework: typed Arc-wrapped fields, no DI container, no Box<dyn Any> bag.
  • rtb-test-support — the promoted test-side App constructor (TestAppBuilder behind a sealed TestWitness), consumed from [dev-dependencies] by downstream crates.
use rtb_app::features::{Feature, Features};

let features = Features::builder().disable(Feature::Init).build();
assert!(!features.is_enabled(Feature::Init));
assert!(features.is_enabled(Feature::Version));

Feature and Features live in rtb_app::features, not at the crate root — use rtb_app::prelude::*; brings both in alongside the rest of the usual wiring types.

Documentation

https://app.rust.phpboyscout.uk

  • Tutorial — from an empty crate to a registered command with passing tests.
  • How-to guides — registering commands, reporting your own version, reading typed config, wiring self-update, building an App in tests.
  • Reference — every public type, field and default, and what happens when one is wrong.
  • Explanation — why App is not a container, why registration is link-time, why the config is type-erased, and what this crate does not do.

Other links:

Development

just ci runs the full local gate (fmt, clippy, nextest, doc, deny). Tests include a cucumber BDD suite (crates/rtb-app/tests/bdd.rs) and trybuild compile-fail fixtures (run isolated — see .config/nextest.toml; nextest is required). Releases are cut by release-plz from Conventional Commits — do not tag manually.

License

MIT