| package configs |
| |
| // VariableTypeHint is an enumeration used for the Variable.TypeHint field, |
| // which is an incompletely-specified type for the variable which is used |
| // as a hint for whether a value provided in an ambiguous context (on the |
| // command line or in an environment variable) should be taken literally as a |
| // string or parsed as an HCL expression to produce a data structure. |
| // |
| // The type hint is applied to runtime values as well, but since it does not |
| // accurately describe a precise type it is not fully-sufficient to infer |
| // the dynamic type of a value passed through a variable. |
| // |
| // These hints use inaccurate terminology for historical reasons. Full details |
| // are in the documentation for each constant in this enumeration, but in |
| // summary: |
| // |
| // - TypeHintString requires a primitive type |
| // - TypeHintList requires a type that could be converted to a tuple |
| // - TypeHintMap requires a type that could be converted to an object |
| type VariableTypeHint rune |
| |
| //go:generate go run golang.org/x/tools/cmd/stringer -type VariableTypeHint |
| |
| // TypeHintNone indicates the absence of a type hint. Values specified in |
| // ambiguous contexts will be treated as literal strings, as if TypeHintString |
| // were selected, but no runtime value checks will be applied. This is reasonable |
| // type hint for a module that is never intended to be used at the top-level |
| // of a configuration, since descendent modules never receive values from |
| // ambiguous contexts. |
| const TypeHintNone VariableTypeHint = 0 |
| |
| // TypeHintString spec indicates that a value provided in an ambiguous context |
| // should be treated as a literal string, and additionally requires that the |
| // runtime value for the variable is of a primitive type (string, number, bool). |
| const TypeHintString VariableTypeHint = 'S' |
| |
| // TypeHintList indicates that a value provided in an ambiguous context should |
| // be treated as an HCL expression, and additionally requires that the |
| // runtime value for the variable is of an tuple, list, or set type. |
| const TypeHintList VariableTypeHint = 'L' |
| |
| // TypeHintMap indicates that a value provided in an ambiguous context should |
| // be treated as an HCL expression, and additionally requires that the |
| // runtime value for the variable is of an object or map type. |
| const TypeHintMap VariableTypeHint = 'M' |