Documentation
¶
Overview ¶
Package config loads and validates the HCL policy file (.tfstackplan.hcl), resolving classification presets+rules into a single ordered rule list while preserving source declaration order.
Index ¶
- Constants
- func Discover(dir string) (string, bool)
- type ApprovalConfig
- type CacheConfig
- type ClassBinding
- type Classification
- type Config
- type DiffConfig
- type DiffOverride
- type GitHubAppConfig
- type GroupConfig
- type HeaderLink
- type LinksConfig
- type ObjectsConfig
- type PhaseWeight
- type ProgressConfig
- type PubSubConfig
- type ServeConfig
- type ServerConfig
Constants ¶
const DefaultFilename = ".tfstackplan.hcl"
DefaultFilename is auto-discovered in the working directory.
Variables ¶
This section is empty.
Functions ¶
func Discover ¶
Discover returns the path to the nearest DefaultFilename at or above dir, searching up to (and including) the repo root. The repo root is the first ancestor containing a `.git` entry; the search never ascends past it, so a stray config above the repo is not picked up. Without a `.git` ancestor the search runs to the filesystem root.
Walking up is what lets a command run from a subdir (e.g. `run apply --dir stacks/<tier>`) auto-discover a repo-root `.tfstackplan.hcl` without an explicit `--config`.
Types ¶
type ApprovalConfig ¶ added in v0.6.0
type ApprovalConfig struct {
Backend string // the block label, e.g. "gcp-pam"
Location string
Duration string
RequesterPool []string
}
ApprovalConfig is the `approval "<backend>" {}` sub-block. Entitlement ids per class come from the top-level `class` blocks, not here.
type CacheConfig ¶ added in v0.18.0
CacheConfig holds the resolved caching fallback settings.
type ClassBinding ¶ added in v0.6.0
type ClassBinding struct {
Name string
Backend string
Entitlement string
EntitlementScope string
Required bool
}
ClassBinding is a `class "<name>" {}` block: binds a classification class to an approval backend + entitlement, and whether it gates (required).
type Classification ¶
Classification holds the resolved, ordered rules and the fallback class.
type Config ¶
type Config struct {
Classification *Classification // nil when no classification block present
Diff DiffConfig
Links *LinksConfig // nil when no links block present
Server *ServerConfig // nil when no server block
Serve *ServeConfig // nil when no serve block (added in a later task)
Classes []ClassBinding // class "<name>" {} bindings
Progress *ProgressConfig // nil when no progress block (falls back to built-in fracs)
Cache *CacheConfig // nil when no cache block present
}
Config is the parsed policy file.
type DiffConfig ¶
type DiffConfig struct {
Detect bool
MaxAttributeLines int // 0 = no cap
Overrides []DiffOverride
}
DiffConfig holds diff defaults and per-attribute overrides.
func (DiffConfig) Resolve ¶
func (d DiffConfig) Resolve(resourceType, attr string) string
Resolve returns the differ kind ("" = auto) for a resource type + attribute.
type DiffOverride ¶
DiffOverride forces a differ for a (resource type, attribute) pair.
type GitHubAppConfig ¶ added in v0.6.0
GitHubAppConfig is the `github_app {}` sub-block.
type GroupConfig ¶ added in v0.6.0
GroupConfig configures the live-DAG grouping. Depth groups by the first Depth path segments (default 2 when the block is absent); Pattern (a regexp) overrides it — the first capture group (or whole match) of the stack path is the group key.
type HeaderLink ¶ added in v0.3.0
HeaderLink is one templated report-header link.
type LinksConfig ¶ added in v0.3.0
type LinksConfig struct {
Resource string
Stack string
Header []HeaderLink
}
LinksConfig holds URL templates for header / stack / resource links.
type ObjectsConfig ¶ added in v0.6.0
ObjectsConfig configures the log-offload object store (currently GCS).
type PhaseWeight ¶ added in v0.16.0
PhaseWeight is one phase's slice of the bar. Weight defaults per phase (see defaultPhaseWeight) when omitted; relative within an operation's set.
type ProgressConfig ¶ added in v0.16.0
type ProgressConfig struct {
Plan []PhaseWeight
Apply []PhaseWeight
}
ProgressConfig declares, per operation, the ordered weighted lifecycle phases the run will emit. Serve uses it to render a single full-progress bar across exactly those phases (ticking phases sub-fill their band by completed/total). Absent => serve falls back to its built-in fractions.
func (*ProgressConfig) For ¶ added in v0.16.0
func (pc *ProgressConfig) For(kind string) []PhaseWeight
For returns the ordered weighted phases for kind ("plan"/"apply"), or nil.
type PubSubConfig ¶ added in v0.6.0
type PubSubConfig struct {
Audience string // expected OIDC audience (default: <public_base_url>/pubsub/push)
ServiceAccount string // the push subscription's OIDC service-account email
}
PubSubConfig configures the Pub/Sub push ingestion endpoint.
type ServeConfig ¶ added in v0.6.0
type ServeConfig struct {
DBPath string
PublicBaseURL string
WebhookSecretEnv string // env var name holding the bearer secret (not the secret itself)
GitHubWebhookSecretEnv string // env var name holding the GitHub webhook HMAC secret
GitHubApp *GitHubAppConfig
Approval *ApprovalConfig
Group *GroupConfig
LogsDir string
Objects *ObjectsConfig
PubSub *PubSubConfig
}
ServeConfig is the `serve {}` block: the control-plane server runtime config.
type ServerConfig ¶ added in v0.6.0
ServerConfig is the `server {}` block: where the control-plane server lives and which environment this repo's CI reports to. Used by `run` (CI) and `serve`.