Skip to content

Add --list-config-env-vars to binaries that use the configs crate #4322

Description

@hubcio

Problem

Operators cannot discover all supported runtime IGGY_* variables. Release builds warn and ignore unknown names.

Add the flag to iggy-server, iggy-connectors and iggy-mcp (add CLI parsing to MCP). Print sorted, deduplicated names/templates, one per stdout line, then exit 0 with empty stderr. Print no values, banners or logs. Handle it after argument parsing but before runtime creation, dotenv/config loading, credentials, plugins, filesystem changes or network activity, including with --fresh.

Scope and design

Reuse ConfigEnvMappings and provider naming rules, including nested fields, enum variants/tags, overrides and skips. Do not maintain a second config-field list or change parsing/validation behavior.

Include each binary's runtime process variables, including shared IGGY_DISPLAY_CONFIG, its config/dotenv paths and, for the server, root credentials and shard executor knobs. Separate these from scan-only allowances without removing those allowances. Exclude build-time IGGY_CI_BUILD, test/CLI-only names, other binaries' prefixes and non-IGGY_* variables. iggy-gateway-kafka remains out of scope: it does not use configs.

Templates

  • Collapse only indexed vector segments to <N>, including nested indices, e.g. IGGY_CLUSTER_NODES_<N>_IP. Keep whole-value leaf vectors as single names and preserve literal digits. Document per-field index limits in help/docs.
  • Include both IGGY_CONNECTORS_SINK_<KEY>_... and IGGY_CONNECTORS_SOURCE_<KEY>_... from their config mappings. <KEY> is the configured connector key uppercased. Document that these overrides require the local provider.
  • Include ..._PLUGIN_CONFIG_<FIELD> for plugin overrides. <FIELD> denotes a top-level field, with underscores preserved, excluding reserved FORMAT. List ..._PLUGIN_CONFIG_FORMAT explicitly. These are passthrough templates, not a guarantee that a plugin accepts every field. Do not load plugins to enumerate them.

Acceptance

  • Test mapping coverage and exclusions per binary, plus nested/leaf vectors, index bounds, enum deduplication and sink/source templates. Exercise real override parsing, including FORMAT; template matches need not be unique.
  • Subprocess tests verify identical, clean output with missing/invalid config, invalid env values and dotenv files, no services/plugins available, and no startup side effects.
  • Document the flag and placeholders in --help and configuration docs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

connectorsConnectors runtimeenhancementA change that improves our (or users) QoLgood first issueGood for newcomersmcpModel Context Protocol integrationserveriggy-server related change

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions