peace_core 0.0.4

Low level data 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
🔵 Compatible by design
🟣 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
  • 🟡 Feature-gated incremental functionality
  • 🔵 Understandable error reporting
  • 🔵 Actionable error messages
  • 🟣 WASM support
  • ⚫ Understandable progress #42
  • ⚫ Built-in application execution methods -- CLI, web service
  • 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 -q --package download -- init https://ifconfig.me ip.json

for cmd in status desired diff ensure diff clean diff
do
    printf "=== ${cmd} ===\n"
    cargo run -q --package download -- $cmd
    printf '\n'
done

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.