Output and Presentation
When the workflow is defined, we want to interact with it in different ways.
Presentation
Command Line Interface
> ./envman deploy Using profile ⦗demo⦘ -- type `development` ✅ 1. app_download done! ⏳ 2. s3_bucket 0/1 creating bucket (el: 6s, eta: 0s) ⏳ 3. s3_object ▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱▱ (el: 0s, eta: 0s)
Continuous Integration
2023-05-07T01:30:31.135Z | app_download | downloaded at /tmp/.a9efb2/web_app.tar
2023-05-07T01:30:31.754Z | s3_bucket | creating bucket
2023-05-07T01:30:32.687Z | s3_bucket | bucket created
Web API
// GET /api/v1/demo/env_deploy/progress
{
"item_id": "s3_bucket",
"progress_update": { "Delta": "Tick" },
"msg_update": { "Set": "creating bucket" }
// ..
}
Web page
// outputs to CLI
let mut output = CliOutput::new();
// === Used in tests === //
// discards all output
let mut output = NoOpOutput;
// records which output functions were called
// and what parameters they were called with
let mut output = FnTrackerOutput::new();
// === Write your own === //
// writes JSON to HTTP response
let mut output = JsonResponseOutput::new();