Documentation
¶
Index ¶
- func ColorizeAction(action string) string
- func ColorizeActionSymbol(action string) string
- func FormatChangeBlock(before, after any) string
- func FormatDiff(before, after string) string
- func FormatHelmPlan(parsed *ParsedHelmPlan) string
- func FormatKeyValue(key string, value any, indent int) string
- func FormatKubernetesPlan(parsed *ParsedKubernetesPlan, planText string) string
- func FormatPlan(jsonStr string) (string, error)
- func FormatResourceHeader(resourceType, name, action string) string
- func FormatSectionHeader(title string) string
- func FormatSummary(summary Summary) string
- func FormatTerraformPlan(parsed *ParsedTerraformPlan) string
- func FormatUnifiedDiff(before, after string) string
- func HasChanges(jsonStr string) (bool, error)
- func HasHelmChanges(parsed *ParsedHelmPlan) bool
- func HasKubernetesChanges(parsed *ParsedKubernetesPlan) bool
- func HasTerraformChanges(parsed *ParsedTerraformPlan) bool
- func IndentString(s string, indent int) string
- func IsCreativeAction(action string) bool
- func IsDestructiveAction(action string) bool
- func IsModifyAction(action string) bool
- func TruncateString(s string, maxLen int) string
- type HelmDiffEntry
- type HelmDiffItem
- type HelmK8sChangeAction
- type HelmModePlan
- type HelmPlan
- type K8sManifestMode
- type KubernetesDiffEntry
- type KubernetesDiffItem
- type KubernetesPlan
- type ParsedHelmChange
- type ParsedHelmPlan
- type ParsedKubernetesChange
- type ParsedKubernetesError
- type ParsedKubernetesPlan
- type ParsedTerraformPlan
- type ParsedTerraformResourceChange
- type PlanType
- type RunnerJobPlanWrapper
- type SandboxModePlan
- type Summary
- type TerraformChangeAction
- type TerraformMode
- type TerraformOutputChange
- type TerraformOutputChangeRaw
- type TerraformPlan
- type TerraformResourceChange
- type TerraformResourceChangeData
- type TerraformResourceDrift
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ColorizeAction ¶
func ColorizeActionSymbol ¶
func FormatChangeBlock ¶
func FormatDiff ¶
func FormatHelmPlan ¶
func FormatHelmPlan(parsed *ParsedHelmPlan) string
FormatHelmPlan formats a parsed Helm plan for terminal output
func FormatKubernetesPlan ¶
func FormatKubernetesPlan(parsed *ParsedKubernetesPlan, planText string) string
FormatKubernetesPlan formats a parsed Kubernetes plan for terminal output
func FormatPlan ¶
FormatPlan detects the plan type and returns a formatted string for terminal output. It automatically detects whether the JSON is a Terraform, Helm, or Kubernetes plan and uses the appropriate parser and formatter.
func FormatResourceHeader ¶
func FormatSectionHeader ¶
func FormatSummary ¶
func FormatTerraformPlan ¶
func FormatTerraformPlan(parsed *ParsedTerraformPlan) string
FormatTerraformPlan formats a parsed Terraform plan for terminal output
func FormatUnifiedDiff ¶
func HasChanges ¶
HasChanges detects the plan type and returns true if the plan has any meaningful changes. This can be used to determine if approval is needed or if the plan is a no-op.
func HasHelmChanges ¶
func HasHelmChanges(parsed *ParsedHelmPlan) bool
HasHelmChanges returns true if the parsed plan has any changes
func HasKubernetesChanges ¶
func HasKubernetesChanges(parsed *ParsedKubernetesPlan) bool
HasKubernetesChanges returns true if the parsed plan has any changes
func HasTerraformChanges ¶
func HasTerraformChanges(parsed *ParsedTerraformPlan) bool
HasChanges returns true if the parsed plan has any non-no-op changes
func IndentString ¶
func IsCreativeAction ¶
func IsDestructiveAction ¶
func IsModifyAction ¶
func TruncateString ¶
Types ¶
type HelmDiffEntry ¶
type HelmDiffEntry struct {
Path string `json:"path"`
Original string `json:"original"`
Applied string `json:"applied"`
Type int `json:"type"`
Payload string `json:"payload"`
}
HelmDiffEntry represents an entry in a Helm diff
type HelmDiffItem ¶
type HelmDiffItem struct {
API string `json:"api"`
Kind string `json:"kind"`
Name string `json:"name"`
Namespace string `json:"namespace"`
Before string `json:"before,omitempty"`
After string `json:"after,omitempty"`
Entries []HelmDiffEntry `json:"entries,omitempty"`
}
HelmDiffItem represents a single Helm diff item
type HelmK8sChangeAction ¶
type HelmK8sChangeAction string
HelmK8sChangeAction represents Helm and Kubernetes change actions
const ( HelmK8sActionAdd HelmK8sChangeAction = "add" HelmK8sActionAdded HelmK8sChangeAction = "added" HelmK8sActionChange HelmK8sChangeAction = "change" HelmK8sActionChanged HelmK8sChangeAction = "changed" HelmK8sActionDestroy HelmK8sChangeAction = "destroy" HelmK8sActionDestroyed HelmK8sChangeAction = "destroyed" )
type HelmModePlan ¶
type HelmModePlan struct {
PlanContents string `json:"plan_contents,omitempty"`
}
HelmModePlan holds Helm plan contents
type HelmPlan ¶
type HelmPlan struct {
Plan string `json:"plan"`
Op string `json:"op"`
HelmContentDiff []HelmDiffItem `json:"helm_content_diff"`
}
HelmPlan represents a Helm plan structure
func MustParseHelm ¶
MustParseHelm parses a JSON string as a Helm plan or panics
type K8sManifestMode ¶
type K8sManifestMode struct {
PlanContents string `json:"plan_contents,omitempty"`
}
K8sManifestMode holds Kubernetes manifest plan contents
type KubernetesDiffEntry ¶
type KubernetesDiffEntry struct {
Path string `json:"path"`
Original string `json:"original"`
Applied string `json:"applied"`
Type int `json:"type"`
Payload string `json:"payload"`
}
KubernetesDiffEntry represents an entry in a Kubernetes diff
type KubernetesDiffItem ¶
type KubernetesDiffItem struct {
Version string `json:"_version"`
Name string `json:"name"`
Namespace string `json:"namespace"`
Kind string `json:"kind"`
API string `json:"api"`
Resource string `json:"resource"`
Op string `json:"op"`
Type int `json:"type"` // 1=add, 2=delete, 3=change
DryRun bool `json:"dry_run"`
Error string `json:"error,omitempty"`
Entries []KubernetesDiffEntry `json:"entries,omitempty"`
}
KubernetesDiffItem represents a single Kubernetes diff item
type KubernetesPlan ¶
type KubernetesPlan struct {
Plan string `json:"plan"`
Op string `json:"op"`
K8sContentDiff []KubernetesDiffItem `json:"k8s_content_diff"`
}
KubernetesPlan represents a Kubernetes plan structure
func MustParseKubernetes ¶
func MustParseKubernetes(jsonStr string) *KubernetesPlan
MustParseKubernetes parses a JSON string as a Kubernetes plan or panics
type ParsedHelmChange ¶
type ParsedHelmChange struct {
Workspace string `json:"workspace"`
Release string `json:"release"`
Resource string `json:"resource"`
ResourceType string `json:"resource_type"`
Action HelmK8sChangeAction `json:"action"`
Before *string `json:"before,omitempty"`
After *string `json:"after,omitempty"`
}
ParsedHelmChange represents a parsed Helm change
type ParsedHelmPlan ¶
type ParsedHelmPlan struct {
Summary Summary `json:"summary"`
Changes []ParsedHelmChange `json:"changes"`
}
ParsedHelmPlan holds the parsed results of a Helm plan
func ParseHelmPlan ¶
func ParseHelmPlan(plan *HelmPlan) *ParsedHelmPlan
ParseHelmPlan parses a HelmPlan into a structured ParsedHelmPlan
type ParsedKubernetesChange ¶
type ParsedKubernetesChange struct {
Namespace string `json:"namespace"`
Name string `json:"name"`
Resource string `json:"resource"`
ResourceType string `json:"resource_type"`
Action HelmK8sChangeAction `json:"action"`
Before *string `json:"before,omitempty"`
After *string `json:"after,omitempty"`
}
ParsedKubernetesChange represents a parsed Kubernetes change
type ParsedKubernetesError ¶
type ParsedKubernetesError struct {
Namespace string `json:"namespace"`
Name string `json:"name"`
Resource string `json:"resource"`
ResourceType string `json:"resource_type"`
Error string `json:"error"`
}
ParsedKubernetesError represents a Kubernetes plan error
type ParsedKubernetesPlan ¶
type ParsedKubernetesPlan struct {
Summary Summary `json:"summary"`
Changes []ParsedKubernetesChange `json:"changes"`
Errors []ParsedKubernetesError `json:"errors,omitempty"`
}
ParsedKubernetesPlan holds the parsed results of a Kubernetes plan
func ParseKubernetesPlan ¶
func ParseKubernetesPlan(plan *KubernetesPlan) *ParsedKubernetesPlan
ParseKubernetesPlan parses a KubernetesPlan into a structured ParsedKubernetesPlan
type ParsedTerraformPlan ¶
type ParsedTerraformPlan struct {
Resources struct {
Summary Summary `json:"summary"`
Changes []ParsedTerraformResourceChange `json:"changes"`
} `json:"resources"`
Outputs struct {
Summary Summary `json:"summary"`
Changes []TerraformOutputChange `json:"changes"`
} `json:"outputs"`
Drift struct {
Summary Summary `json:"summary"`
Changes []ParsedTerraformResourceChange `json:"changes"`
} `json:"drift"`
}
ParsedTerraformPlan holds the parsed results of a Terraform plan
func ParseTerraformPlan ¶
func ParseTerraformPlan(plan *TerraformPlan) *ParsedTerraformPlan
ParseTerraformPlan parses a TerraformPlan into a structured ParsedTerraformPlan
type ParsedTerraformResourceChange ¶
type ParsedTerraformResourceChange struct {
Address string `json:"address"`
Module *string `json:"module,omitempty"`
Resource string `json:"resource"`
Name string `json:"name"`
Action TerraformChangeAction `json:"action"`
Before any `json:"before,omitempty"`
After any `json:"after,omitempty"`
}
ParsedTerraformResourceChange represents a flattened resource change
type PlanType ¶
type PlanType string
PlanType represents the type of deployment plan
func DetectPlanType ¶
DetectPlanType attempts to detect the plan type from a JSON string and returns the plan type along with the parsed plan structure. It first tries to unwrap the runner job API response, then detects the plan type.
func GetPlanType ¶
GetPlanType returns the detected plan type for a JSON string. This is useful when you need to know the type before formatting.
type RunnerJobPlanWrapper ¶
type RunnerJobPlanWrapper struct {
SandboxMode *SandboxModePlan `json:"sandbox_mode,omitempty"`
ApplyPlanContents string `json:"apply_plan_contents,omitempty"`
ApplyPlanDisplay string `json:"apply_plan_display,omitempty"`
Helm *HelmModePlan `json:"helm,omitempty"`
Terraform *TerraformMode `json:"terraform,omitempty"`
KubernetesManifest *K8sManifestMode `json:"kubernetes_manifest,omitempty"`
}
RunnerJobPlanWrapper represents the API response from GetRunnerJobPlan
type SandboxModePlan ¶
type SandboxModePlan struct {
Helm *HelmModePlan `json:"helm,omitempty"`
Terraform *TerraformMode `json:"terraform,omitempty"`
KubernetesManifest *K8sManifestMode `json:"kubernetes_manifest,omitempty"`
}
SandboxModePlan holds nested plan data for sandbox mode
type Summary ¶
type Summary struct {
Create int `json:"create"`
Update int `json:"update"`
Delete int `json:"delete"`
Replace int `json:"replace"`
Read int `json:"read"`
NoOp int `json:"no-op"`
Add int `json:"add"`
Change int `json:"change"`
Destroy int `json:"destroy"`
}
Summary holds counts for plan changes
type TerraformChangeAction ¶
type TerraformChangeAction string
TerraformChangeAction represents Terraform change actions
const ( TerraformActionCreate TerraformChangeAction = "create" TerraformActionUpdate TerraformChangeAction = "update" TerraformActionDelete TerraformChangeAction = "delete" TerraformActionNoOp TerraformChangeAction = "no-op" TerraformActionReplace TerraformChangeAction = "replace" TerraformActionRead TerraformChangeAction = "read" )
type TerraformMode ¶
type TerraformMode struct {
PlanContents string `json:"plan_contents,omitempty"`
PlanDisplayContents string `json:"plan_display_contents,omitempty"`
}
TerraformMode holds Terraform plan contents
type TerraformOutputChange ¶
type TerraformOutputChange struct {
Output string `json:"output"`
Action TerraformChangeAction `json:"action"`
Before any `json:"before,omitempty"`
After any `json:"after,omitempty"`
AfterUnknown any `json:"after_unknown,omitempty"`
AfterSensitive any `json:"after_sensitive,omitempty"`
BeforeSensitive any `json:"before_sensitive,omitempty"`
}
TerraformOutputChange represents a parsed output change
type TerraformOutputChangeRaw ¶
type TerraformOutputChangeRaw struct {
Actions []TerraformChangeAction `json:"actions"`
Before any `json:"before,omitempty"`
After any `json:"after,omitempty"`
AfterUnknown any `json:"after_unknown,omitempty"`
AfterSensitive any `json:"after_sensitive,omitempty"`
BeforeSensitive any `json:"before_sensitive,omitempty"`
}
TerraformOutputChangeRaw represents raw output change from JSON
type TerraformPlan ¶
type TerraformPlan struct {
ResourceDrift []TerraformResourceDrift `json:"resource_drift,omitempty"`
ResourceChanges []TerraformResourceChange `json:"resource_changes"`
OutputChanges map[string]TerraformOutputChangeRaw `json:"output_changes,omitempty"`
}
TerraformPlan represents a Terraform plan structure
func MustParseTerraform ¶
func MustParseTerraform(jsonStr string) *TerraformPlan
MustParseTerraform parses a JSON string as a Terraform plan or panics
type TerraformResourceChange ¶
type TerraformResourceChange struct {
Address string `json:"address"`
ModuleAddress *string `json:"module_address,omitempty"`
Type string `json:"type"`
Name string `json:"name"`
Change TerraformResourceChangeData `json:"change"`
}
TerraformResourceChange represents a resource change entry
type TerraformResourceChangeData ¶
type TerraformResourceChangeData struct {
Actions []TerraformChangeAction `json:"actions"`
Before any `json:"before,omitempty"`
After any `json:"after,omitempty"`
AfterUnknown any `json:"after_unknown,omitempty"`
}
TerraformResourceChangeData holds the change details
type TerraformResourceDrift ¶
type TerraformResourceDrift struct {
Address string `json:"address"`
ModuleAddress *string `json:"module_address,omitempty"`
Type string `json:"type"`
Name string `json:"name"`
Change TerraformResourceChangeData `json:"change"`
}
TerraformResourceDrift represents a resource drift entry