packages feed

seihou-cli-0.12.0.0: help/variables.md

VARIABLES

Variables are named, typed values that modules use to customize generated
output. They are declared in module.dhall and resolved at generation time
from multiple sources.

DECLARING VARIABLES

  Each declaration has name, type, optional default/description/validation,
  and a required flag. Supported CLI types are text, bool, int, list text,
  and choice. Text lists are comma-separated; choices use a prompt's choices.
  list bool/list int decode as types but their CLI coercion is not implemented.
  Required variables with no resolved value prompt interactively or fail when
  no prompt can supply a value. Optional variables may remain unset.

RESOLUTION ORDER

  Highest precedence first:

  1. CLI overrides       --var project.name=my-app
  2. Saved inputs        Ordinary update only (unless --reconfigure)
  3. Environment         SEIHOU_VAR_PROJECT_NAME
  4. Local config        .seihou/config.dhall
  5. Namespace config    ~/.config/seihou/namespaces/<ns>/config.dhall
  6. Context config      ~/.config/seihou/contexts/<ctx>/config.dhall
  7. Global config       ~/.config/seihou/config.dhall
  8. Parent bindings     Parameterized dependencies
  9. Default value       Declared in the artifact

  Interactive prompts fill missing values after this resolution. Initial
  generation has no saved-input tier. Agent provider/model/effort/trace
  settings use a different precedence chain; see `seihou help agent`.

EXPORTS

  A module can export variables so that dependent modules can use them.
  Exports are declared in module.dhall and make a variable's resolved value
  available to any module that depends on this one.

INSPECTING VARIABLES

  seihou vars <module>                 List declared variables
  seihou vars <module> --explain       Show resolved values with provenance
  seihou vars <module> --var k=v       Supply values for resolution

  The --explain flag is especially useful for debugging: it shows where each
  variable's value came from (CLI, config, default, export, etc.).

NAMESPACING

  The namespace selects a separate config file, not a prefix added to every
  variable name. Use --namespace NS to override the artifact's default
  namespace. `seihou vars NAME --explain` reports the resolved source.

## Recipe inputs

Recipe inputs are resolved before module variables. A required recipe boolean
without a default asks once on an interactive terminal, even when every consuming
module defaults it to false. In automation, supply `--var git.createGithub=false`
(or configuration); missing required choices fail before generation.

Recipe precedence is CLI, literal recipe bindings, saved recipe inputs on update,
environment, local/namespace/context/global configuration, then recipe defaults.
Resolved recipe inputs override module saved values and defaults. Each consumer
still validates the value. Explicit false is a value, not an omitted answer.
Optional prompt conditions see typed recipe values and earlier answers; a false
condition skips interaction but does not waive a required declaration.

Successful runs record recipe inputs in the checked-in manifest, including inputs
used only by conditions. `seihou update RECIPE` reuses them in fresh clones;
`--reconfigure` discards saved choices. Older applications adopt agreeing consumer
values during ordinary preview; conflicts require `--var KEY=VALUE` or
`--reconfigure`. Saving prompted values to local config remains optional and
respects `--save-prompted` and `--no-save-prompted`; previews do not save them.