peace_diff 0.0.3

Diff types for the peace automation framework.
Documentation

🕊️ peace – zero stress automation

Crates.io docs.rs CI Coverage Status

peace is a framework to build user friendly software automation.

See:

  • MOTIVATION.md for the motivation to create this framework.
  • Operations UX for a book about the dimensions considered during peace's design and development.

Guiding Principles

  • A joy to use.
  • Ergonomic API and guidance to do the right thing.
  • Understandable output.

Features

Symbol Meaning
🟢 Works well
🟡 Work in progress
Planned
🔵 Works, "fun idea"
  • 🟢 Define items to manage
  • 🟢 Define dependencies between items
  • 🟢 Fetch current and desired states
  • 🟢 Workflow graph with task dependencies
  • 🟢 Concurrent task execution
  • 🟢 Skip unnecessary work
  • 🟢 Show state differences
  • 🟢 Namespaced profile directories
  • 🟢 Dry run
  • 🟢 Resource clean up
  • 🔵 WASM support
  • ⚫ Understandable error reporting
  • ⚫ Understandable progress
  • ⚫ Feature-gated incremental functionality
  • ⚫ Built-in application execution methods -- CLI, web service
  • ⚫ Actionable error messages
  • peace binary for configuration based workflows
  • ⚫ Off-the-shelf support for common tasks
  • ⚫ Web based UI
  • ⚫ Agent mode to run peace on servers (Web API invocation)

Further ideas:

  • Back up current state
  • Restore previous state
  • Telemetry logging for monitoring
  • Metrics collection for analysis

Examples

Examples are run using --package instead of --example, as each example is organized as its own crate.

cargo run --package $example_name

# e.g.
cargo run --package download -- status https://ifconfig.me ip.json

WASM

The download example can be built as a web assembly application using wasm-pack:

cd examples/download
wasm-pack build --target web

In the examples/download directory, start an HTTP server, and open http://localhost:8000/:

python3 -m http.server 8000 # or
simple-http-server --nocache --port 8000 -i

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.