Skip to main content

Module render

Module render 

Source
Expand description

The human-readable renderings, and the only place colour is woven in.

These lived in acme_proxy_admin::admin::render beside the JSON ones until colour arrived. The split is where the sharing actually is: every render_*_json is read by both front ends (crates/admin/src/webadmin/pages/, crates/admin/src/webadmin/handlers/) and must stay byte-identical for a script parsing --json, while every renderer here has exactly one consumer, the terminal. Keeping them together would have meant either a Palette argument threaded through crates/admin/src/admin/, which is the front-end-agnostic layer, or colouring whole lines from the print site, which is all a finished padded string allows.

Two conventions hold throughout:

  • Pad first, then colour — palette.status(&format!("{:<11}", status)). A format width counts bytes, so wrapping before padding counts the escape and collapses the column. See super::style.
  • Colour is semantic, never decorative. Statuses, refusals and standing warnings; not labels, not timestamps, not identifiers. A listing should read as data with a few things standing out, and Palette::plain() must stay the shape an operator’s awk was written against.

Functions§

json_page
The envelope a paged --json listing answers with.
print_expiring_footer
Prints [expiring_footer_line].
print_footer
Prints [footer_line].
print_page
Prints one page, in whichever of the two shapes was asked for.
render_account_detail_text
account show <id>, one field per line.
render_account_line
One line: id profile status last_seen_from contact created_at.
render_admin_session_line
One line: id user state created_at expires_at ip.
render_admin_totp_line
admin user totp status, in words.
render_admin_user_detail_text
admin user show <username>, one field per line.
render_admin_user_line
One line: username status role totp created_at last_login.
render_audit_detail_text
audit show <id>, one field per line — the row carries thirteen possible fields and a single line of them would wrap on any terminal.
render_audit_line
One line: id created_at event profile actor client identifiers.
render_eab_created_text
eab create text output.
render_eab_line
One line: kid status label created_at (RFC3339).
render_expiring_line
One line of order list --expiring-in: order_id profile Nd not_after identifiers, plus a replaced-by= suffix where something has.
render_job_detail_text
jobs show, one field per line, then — for a relay job — the upstream order block. Tracks acme_proxy_admin::admin::render::render_job_detail_json member for member, omitting every field that was not recorded.
render_job_line
One line: id kind status attempts/max run_at dedup_key, plus a painted error= suffix when the last attempt left one.
render_order_detail_text
order show, one field per line, then the authorization tree.
render_order_line
One line: id status identifiers (comma-joined) created_at.
render_profile_line
One line: name challenges eab directory.
render_upstream_order_detail_text
upstream order show: the row’s fields, then — when one exists — the relay job driving it.
render_upstream_order_line
One line: order_id profile status local_status identifiers updated_at.