Skip to content

launch

launch

Standalone container-launch verbs — prepare, run, resolve, setup.

These verbs carry standalone_only in their extras: their argv shapes (the run -- separator, prepare's eval-friendly output, setup's hook install) don't lift cleanly into a generic Shield-injecting handler, so they have handler=None and the CLI dispatches them through dedicated bodies in terok_shield.cli.main. Only their argument definitions and help live here.

PREPARE = CommandDef(name='prepare', help='Prepare shield and print podman flags', extras=NEEDS_CTR_STANDALONE, epilog='Resolve DNS, install hooks, and print the podman flags needed to launch a shielded container. Use with eval:\n\n eval "podman run $(terok-shield prepare my-ctr) alpine:latest sh"', args=(CONTAINER_ARG, _PROFILES_ARG, ArgDef(name='--json', action='store_true', dest='output_json', help='JSON output'))) module-attribute

RUN = CommandDef(name='run', help='Launch a shielded container via podman', extras=NEEDS_CTR_STANDALONE, epilog="Prepare shield and exec into podman run with the correct flags. Everything after '--' is passed to podman run as-is:\n\n terok-shield run my-container -- alpine:latest sh", args=(CONTAINER_ARG, _PROFILES_ARG)) module-attribute

RESOLVE = CommandDef(name='resolve', help='Resolve DNS profiles and cache IPs', extras=NEEDS_CTR_STANDALONE, args=(CONTAINER_ARG, ArgDef(name='--force', action='store_true', help='Bypass cache freshness'))) module-attribute

SETUP = CommandDef(name='setup', help='Install global OCI hooks for restart persistence', extras=STANDALONE) module-attribute