API Reference macaw_host v#0.1.4

Copy Markdown View Source

Modules

An app's build: its version and the commit it was built from, fixed at compile time.

An app's configuration, from the literal config.exs on its data volume.

The literal config.exs on a host's data volume: a map that is parsed, never evaluated.

The setting types Macaw.Host.Config understands, and how a value of each is read from an environment variable (a string) or checked from config.exs (a literal).

Generates an app's host control script, <app>-ctl, so the apps of the family stop hand-maintaining thousands of lines of the same script.

The app description <app>-ctl is generated from: the :ctl key of the app's mix.exs project config, checked once here so the templates can trust every value.

A recording stand-in for a generated script's Ctl.World, so an app's tests drive every <app>-ctl command without docker on the box and assert each command's exact docker argv.

An app's health, in one shape every <app>-ctl status reads.

Serves an app's health report as JSON: 200 when healthy, 503 when not.

The release side of an app's <app>-ctl: entry points the script runs as bin/<app> eval (in a throwaway container, so they work with the app stopped) or bin/<app> rpc (asking the running app).

Secrets the system generates itself (secret_key_base, signing and sealing keys), kept in the data directory, readable by their owner only.

Mix Tasks

Generates the app's host control script from the :ctl description in its mix.exs (Macaw.Host.Ctl.Description) and its own commands (Ctl.AppCommands, in ctl/app_commands.ex by default).