| // Copyright IBM Corp. 2020, 2026 | |
| // SPDX-License-Identifier: MPL-2.0 | |
| package tfexec | |
| import ( | |
| "context" | |
| "fmt" | |
| ) | |
| // this file contains non-parsed exported errors | |
| type ErrNoSuitableBinary struct { | |
| err error | |
| } | |
| func (e *ErrNoSuitableBinary) Error() string { | |
| return fmt.Sprintf("no suitable terraform binary could be found: %s", e.err.Error()) | |
| } | |
| func (e *ErrNoSuitableBinary) Unwrap() error { | |
| return e.err | |
| } | |
| // ErrVersionMismatch is returned when the detected Terraform version is not compatible with the | |
| // command or flags being used in this invocation. | |
| type ErrVersionMismatch struct { | |
| MinInclusive string | |
| MaxExclusive string | |
| Actual string | |
| } | |
| func (e *ErrVersionMismatch) Error() string { | |
| return fmt.Sprintf("unexpected version %s (min: %s, max: %s)", e.Actual, e.MinInclusive, e.MaxExclusive) | |
| } | |
| // ErrManualEnvVar is returned when an env var that should be set programatically via an option or method | |
| // is set via the manual environment passing functions. | |
| type ErrManualEnvVar struct { | |
| Name string | |
| } | |
| func (err *ErrManualEnvVar) Error() string { | |
| return fmt.Sprintf("manual setting of env var %q detected", err.Name) | |
| } | |
| // cmdErr is a custom error type to be returned when a cmd exits with a context | |
| // error such as context.Canceled or context.DeadlineExceeded. | |
| // The type is specifically designed to respond true to errors.Is for these two | |
| // errors. | |
| // See https://github.com/golang/go/issues/21880 for why this is necessary. | |
| type cmdErr struct { | |
| err error | |
| ctxErr error | |
| } | |
| func (e cmdErr) Is(target error) bool { | |
| switch target { | |
| case context.DeadlineExceeded, context.Canceled: | |
| return e.ctxErr == context.DeadlineExceeded || e.ctxErr == context.Canceled | |
| } | |
| return false | |
| } | |
| func (e cmdErr) Unwrap() error { | |
| return e.err | |
| } | |
| func (e cmdErr) Error() string { | |
| return e.err.Error() | |
| } |