package json import "fmt" type Operation string const ( OperationApplied Operation = "apply" OperationDestroyed Operation = "destroy" OperationPlanned Operation = "plan" ) type ChangeSummary struct { Add int `json:"add"` Change int `json:"change"` Remove int `json:"remove"` Operation Operation `json:"operation"` } // The summary strings for apply and plan are accidentally a public interface // used by Terraform Cloud and Terraform Enterprise, so the exact formats of // these strings are important. func (cs *ChangeSummary) String() string { switch cs.Operation { case OperationApplied: return fmt.Sprintf("Apply complete! Resources: %d added, %d changed, %d destroyed.", cs.Add, cs.Change, cs.Remove) case OperationDestroyed: return fmt.Sprintf("Destroy complete! Resources: %d destroyed.", cs.Remove) case OperationPlanned: return fmt.Sprintf("Plan: %d to add, %d to change, %d to destroy.", cs.Add, cs.Change, cs.Remove) default: return fmt.Sprintf("%s: %d add, %d change, %d destroy", cs.Operation, cs.Add, cs.Change, cs.Remove) } }