Error implements the error interface
()
| 161 | |
| 162 | // Error implements the error interface |
| 163 | func (e *ConfigurationError) Error() string { |
| 164 | var b strings.Builder |
| 165 | |
| 166 | fmt.Fprintf(&b, "[%s] Configuration error in '%s'", |
| 167 | e.Timestamp.Format(time.RFC3339), e.ConfigKey) |
| 168 | |
| 169 | if e.Value != "" { |
| 170 | // Truncate long values |
| 171 | truncatedValue := stringutil.Truncate(e.Value, 100) |
| 172 | fmt.Fprintf(&b, "\n\nValue: %s", truncatedValue) |
| 173 | } |
| 174 | |
| 175 | fmt.Fprintf(&b, "\nReason: %s", e.Reason) |
| 176 | |
| 177 | if e.Suggestion != "" { |
| 178 | fmt.Fprintf(&b, "\nSuggestion: %s", e.Suggestion) |
| 179 | } else { |
| 180 | // Provide default suggestion |
| 181 | fmt.Fprintf(&b, "\nSuggestion: Check the safe-outputs configuration in your workflow frontmatter and ensure '%s' is correctly specified.", e.ConfigKey) |
| 182 | } |
| 183 | |
| 184 | return b.String() |
| 185 | } |
| 186 | |
| 187 | // NewConfigurationError creates a new configuration error with context |
| 188 | func NewConfigurationError(configKey, value, reason, suggestion string) *ConfigurationError { |