Upgrade HCL to include fmt fix, involves #21434

This commit is contained in:
Pam Selle 2019-07-22 16:04:45 -04:00
parent a02e43b86e
commit d34103696f
9 changed files with 13 additions and 45 deletions

2
go.mod
View File

@ -64,7 +64,7 @@ require (
github.com/hashicorp/go-version v1.1.0 github.com/hashicorp/go-version v1.1.0
github.com/hashicorp/golang-lru v0.5.0 // indirect github.com/hashicorp/golang-lru v0.5.0 // indirect
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f
github.com/hashicorp/hcl2 v0.0.0-20190719002611-618463aa7958 github.com/hashicorp/hcl2 v0.0.0-20190725010614-0c3fe388e450
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590
github.com/hashicorp/logutils v1.0.0 github.com/hashicorp/logutils v1.0.0
github.com/hashicorp/memberlist v0.1.0 // indirect github.com/hashicorp/memberlist v0.1.0 // indirect

6
go.sum
View File

@ -216,10 +216,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws=
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE= github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE=
github.com/hashicorp/hcl2 v0.0.0-20190702185634-5b39d9ff3a9a h1:1KfDwkIXrxrfMpqwuW//ujObiYNuR2DqaETSK2NB8Ug= github.com/hashicorp/hcl2 v0.0.0-20190725010614-0c3fe388e450 h1:wpa0vOXOnSEuwZ++eVk1gQNm3Jy2+Envn0cQRgsl8K8=
github.com/hashicorp/hcl2 v0.0.0-20190702185634-5b39d9ff3a9a/go.mod h1:FSQTwDi9qesxGBsII2VqhIzKQ4r0bHvBkOczWfD7llg= github.com/hashicorp/hcl2 v0.0.0-20190725010614-0c3fe388e450/go.mod h1:FSQTwDi9qesxGBsII2VqhIzKQ4r0bHvBkOczWfD7llg=
github.com/hashicorp/hcl2 v0.0.0-20190719002611-618463aa7958 h1:tWvka6jPDo/2jqd06ErHWiWlrXZDczD63dTfBw2wxi0=
github.com/hashicorp/hcl2 v0.0.0-20190719002611-618463aa7958/go.mod h1:FSQTwDi9qesxGBsII2VqhIzKQ4r0bHvBkOczWfD7llg=
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI= github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI=
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE=
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=

View File

@ -59,7 +59,6 @@ func NewConstraint(v string) (Constraints, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
result[i] = c result[i] = c
} }

View File

@ -95,7 +95,7 @@ schema model provides a description of only one level of nested blocks at
a time, and thus a new schema must be provided for each additional level of a time, and thus a new schema must be provided for each additional level of
nesting. nesting.
To make this arduous process as convenient as possbile, this package provides To make this arduous process as convenient as possible, this package provides
a helper function `WalkForEachVariables`, which returns a `WalkVariablesNode` a helper function `WalkForEachVariables`, which returns a `WalkVariablesNode`
instance that can be used to find variables directly in a given body and also instance that can be used to find variables directly in a given body and also
determine which nested blocks require recursive calls. Using this mechanism determine which nested blocks require recursive calls. Using this mechanism

View File

@ -187,7 +187,7 @@ for later evaluation by the calling application.
### Blocks ### Blocks
A _block_ creates a child body that is annotated with a block _type_ and A _block_ creates a child body that is annotated with a block _type_ and
zero or more block _labels_. Blocks create a structural hierachy which can be zero or more block _labels_. Blocks create a structural hierarchy which can be
interpreted by the calling application. interpreted by the calling application.
Block labels can either be quoted literal strings or naked identifiers. Block labels can either be quoted literal strings or naked identifiers.

View File

@ -66,7 +66,7 @@ _block header schemata_:
Within a schema, it is an error to request the same attribute name twice or Within a schema, it is an error to request the same attribute name twice or
to request a block type whose name is also an attribute name. While this can to request a block type whose name is also an attribute name. While this can
in principle be supported in some syntaxes, in other syntaxes the attribute in principle be supported in some syntaxes, in other syntaxes the attribute
and block namespaces are combined and so an an attribute cannot coexist with and block namespaces are combined and so an attribute cannot coexist with
a block whose type name is identical to the attribute name. a block whose type name is identical to the attribute name.
The result of applying a body schema to a body is _body content_, which The result of applying a body schema to a body is _body content_, which
@ -497,7 +497,7 @@ producing an unknown value of the target type.
Conversion of any value _to_ the dynamic pseudo-type is a no-op. The result Conversion of any value _to_ the dynamic pseudo-type is a no-op. The result
is the input value, verbatim. This is the only situation where the conversion is the input value, verbatim. This is the only situation where the conversion
result value is not of the the given target type. result value is not of the given target type.
### Primitive Type Conversions ### Primitive Type Conversions

View File

@ -33,9 +33,9 @@ type Blocks []*Block
type Attributes map[string]*Attribute type Attributes map[string]*Attribute
// Body is a container for attributes and blocks. It serves as the primary // Body is a container for attributes and blocks. It serves as the primary
// unit of heirarchical structure within configuration. // unit of hierarchical structure within configuration.
// //
// The content of a body cannot be meaningfully intepreted without a schema, // The content of a body cannot be meaningfully interpreted without a schema,
// so Body represents the raw body content and has methods that allow the // so Body represents the raw body content and has methods that allow the
// content to be extracted in terms of a given schema. // content to be extracted in terms of a given schema.
type Body interface { type Body interface {

View File

@ -54,22 +54,12 @@ func formatIndent(lines []formatLine) {
// which should be more than enough for reasonable HCL uses. // which should be more than enough for reasonable HCL uses.
indents := make([]int, 0, 10) indents := make([]int, 0, 10)
inHeredoc := false
for i := range lines { for i := range lines {
line := &lines[i] line := &lines[i]
if len(line.lead) == 0 { if len(line.lead) == 0 {
continue continue
} }
if inHeredoc {
for _, token := range line.lead {
if token.Type == hclsyntax.TokenCHeredoc {
inHeredoc = false
}
}
continue // don't touch indentation inside heredocs
}
if line.lead[0].Type == hclsyntax.TokenNewline { if line.lead[0].Type == hclsyntax.TokenNewline {
// Never place spaces before a newline // Never place spaces before a newline
line.lead[0].SpacesBefore = 0 line.lead[0].SpacesBefore = 0
@ -80,9 +70,10 @@ func formatIndent(lines []formatLine) {
for _, token := range line.lead { for _, token := range line.lead {
netBrackets += tokenBracketChange(token) netBrackets += tokenBracketChange(token)
if token.Type == hclsyntax.TokenOHeredoc { if token.Type == hclsyntax.TokenOHeredoc {
inHeredoc = true break
} }
} }
for _, token := range line.assign { for _, token := range line.assign {
netBrackets += tokenBracketChange(token) netBrackets += tokenBracketChange(token)
} }
@ -391,9 +382,9 @@ func linesForFormat(tokens Tokens) []formatLine {
// Now we'll pick off any trailing comments and attribute assignments // Now we'll pick off any trailing comments and attribute assignments
// to shuffle off into the "comment" and "assign" cells. // to shuffle off into the "comment" and "assign" cells.
inHeredoc := false
for i := range lines { for i := range lines {
line := &lines[i] line := &lines[i]
if len(line.lead) == 0 { if len(line.lead) == 0 {
// if the line is empty then there's nothing for us to do // if the line is empty then there's nothing for us to do
// (this should happen only for the final line, because all other // (this should happen only for the final line, because all other
@ -401,26 +392,6 @@ func linesForFormat(tokens Tokens) []formatLine {
continue continue
} }
if inHeredoc {
for _, tok := range line.lead {
if tok.Type == hclsyntax.TokenCHeredoc {
inHeredoc = false
break
}
}
// Inside a heredoc everything is "lead", even if there's a
// template interpolation embedded in there that might otherwise
// confuse our logic below.
continue
}
for _, tok := range line.lead {
if tok.Type == hclsyntax.TokenOHeredoc {
inHeredoc = true
break
}
}
if len(line.lead) > 1 && line.lead[len(line.lead)-1].Type == hclsyntax.TokenComment { if len(line.lead) > 1 && line.lead[len(line.lead)-1].Type == hclsyntax.TokenComment {
line.comment = line.lead[len(line.lead)-1:] line.comment = line.lead[len(line.lead)-1:]
line.lead = line.lead[:len(line.lead)-1] line.lead = line.lead[:len(line.lead)-1]

2
vendor/modules.txt vendored
View File

@ -326,7 +326,7 @@ github.com/hashicorp/hcl/hcl/scanner
github.com/hashicorp/hcl/hcl/strconv github.com/hashicorp/hcl/hcl/strconv
github.com/hashicorp/hcl/json/scanner github.com/hashicorp/hcl/json/scanner
github.com/hashicorp/hcl/json/token github.com/hashicorp/hcl/json/token
# github.com/hashicorp/hcl2 v0.0.0-20190719002611-618463aa7958 # github.com/hashicorp/hcl2 v0.0.0-20190725010614-0c3fe388e450
github.com/hashicorp/hcl2/hcl github.com/hashicorp/hcl2/hcl
github.com/hashicorp/hcl2/hcl/hclsyntax github.com/hashicorp/hcl2/hcl/hclsyntax
github.com/hashicorp/hcl2/hcldec github.com/hashicorp/hcl2/hcldec