Skip to main content

Reproducible, sanitized terminal-demo SVGs for READMEs and websites.

Project description

plating

Reproducible, sanitized terminal-demo SVGs for READMEs and websites.

plating rendering a demo spec into an SVG

That recording was made by plating: plating render examples/plating-demo.json.

What it does

You want a clean terminal recording at the top of your README, the kind that types a command and shows real output in a tidy macOS-style window. Recording one by hand means fighting a screen recorder, leaking your home path and hostname into the frames, and redoing it whenever the output changes. plating turns a small JSON spec into that SVG, every time, from real command output, with a leak scan in front of it.

  • Reproducible. Commit the spec and its captured output; regenerate the exact SVG with one command.
  • Sanitized. A built-in leak scan refuses to render if a home path, username, hostname, or private IP slips into the frame.
  • Honest. Commands and their output are verbatim. Only the typing animation and a throwaway-path to ~ rewrite are synthesized.
  • Portable. The animated SVG embeds in GitHub READMEs and on web pages as a plain <img>, with no runtime JavaScript.

Install

pipx install plating-cli
npm install -g svg-term-cli   # the SVG renderer plating shells out to

Use it

Write a spec, quickstart.json:

{
  "title": "quickstart",
  "width": 84,
  "steps": [
    { "command": "mytool --version", "output": "mytool 1.2.3\n" },
    { "command": "mytool build", "output_file": "build-output.txt" }
  ]
}

Render it:

plating render quickstart.json
# wrote quickstart.svg   (and quickstart.cast, the reproducible source)

Then embed quickstart.svg in your README or drop it into a site.

Where each step's output comes from

In priority order:

In the step Output is
"output": "..." the literal string
"output_file": "path" a captured-output file (relative to the spec)
"run": true (or plating render --run) the live result of running command

Live capture (--run) is convenient; committing captured output is what makes it reproducible in CI. Use normalize to rewrite a throwaway path into something clean:

{ "normalize": [["/tmp/tmp.AbC123/demo", "~/my-repo"]] }

Sanitization

Before rendering, plating scans the recording for /home/... and /Users/... paths, the machine's current username and hostname, and private IPs. If it finds one it refuses to render and tells you how to fix it (add a normalize rule, or pass --allow-leaks). You can scan any file on its own:

plating scan some-recording.cast

Options

Spec keys: title, width, height, padding, window (macOS chrome, on by default), prompt, prompt_color, the timing knobs (type_speed, line_delay, command_pause, ... see src/plating/cast.py), normalize, scan_patterns, cwd.

CLI:

plating render <spec> [--run] [--cwd DIR] [--out-dir DIR] [--png MS] [--allow-leaks]
plating scan <file>

--png MS writes a static PNG of the frame at MS milliseconds (via headless Chrome), handy for a quick eyeball before you commit the SVG.

A real example

examples/brigade-quickstart.json rebuilds the quickstart recording used in the Brigade README from its real, captured output:

plating render examples/brigade-quickstart.json

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plating_cli-0.1.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plating_cli-0.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file plating_cli-0.1.0.tar.gz.

File metadata

  • Download URL: plating_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for plating_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 806b4d7b401c5eecdea194901d8dba714da870ccb3cfc211b709a6a893a701cd
MD5 54576f814de282130944f54d94f4ca5d
BLAKE2b-256 068c723315255d7584039e5071eebaae7e826805180149f4e88a1e72910599ee

See more details on using hashes here.

File details

Details for the file plating_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: plating_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for plating_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f90ba0814d6cf4a37d15f5795c639a056656b15ee6303839ebc329e03ca9a61c
MD5 370f81a12a5ec4ce5e4eafb2d40f1857
BLAKE2b-256 862d73e49f7f2b04bf41a21e4413c3a0a754613299b53146fb584df2940b0b33

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page