Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: packer validate unsupported type error #13245

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions command/test-fixtures/validate/invalid_block_type.pkr.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
src "docker" "ubuntu" {
image = var.docker_image
commit = true
}
3 changes: 3 additions & 0 deletions command/validate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ func TestValidateCommand(t *testing.T) {
// wrong version field
{path: filepath.Join(testFixture("version_req", "wrong_field_name")), exitCode: 1},

// wrong packer block type
{path: filepath.Join(testFixture("validate", "invalid_block_type.pkr.hcl")), exitCode: 1},

// wrong packer block
{path: filepath.Join(testFixture("validate", "invalid_packer_block.pkr.hcl")), exitCode: 1},

Expand Down
11 changes: 9 additions & 2 deletions hcl2template/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,14 @@ func (p *Parser) Parse(filename string, varFiles []string, argVars map[string]st
return cfg, diags
}

// Looks for invalid arguments or unsupported block types
{
for _, file := range files {
_, moreDiags := file.Body.Content(configSchema)
diags = append(diags, moreDiags...)
}
}

// Decode required_plugins blocks.
//
// Note: using `latest` ( or actually an empty string ) in a config file
Expand Down Expand Up @@ -585,8 +593,7 @@ func (p *Parser) decodeDatasources(file *hcl.File, cfg *PackerConfig) hcl.Diagno
var diags hcl.Diagnostics

body := file.Body
content, moreDiags := body.Content(configSchema)
diags = append(diags, moreDiags...)
content, _ := body.Content(configSchema)

for _, block := range content.Blocks {
switch block.Type {
Expand Down
6 changes: 2 additions & 4 deletions hcl2template/types.packer_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,7 @@ func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty.
func (c *PackerConfig) decodeInputVariables(f *hcl.File) hcl.Diagnostics {
var diags hcl.Diagnostics

content, moreDiags := f.Body.Content(configSchema)
diags = append(diags, moreDiags...)
content, _ := f.Body.Content(configSchema)

// for input variables we allow to use env in the default value section.
ectx := &hcl.EvalContext{
Expand Down Expand Up @@ -188,8 +187,7 @@ func (c *PackerConfig) decodeInputVariables(f *hcl.File) hcl.Diagnostics {
func parseLocalVariableBlocks(f *hcl.File) ([]*LocalBlock, hcl.Diagnostics) {
var diags hcl.Diagnostics

content, moreDiags := f.Body.Content(configSchema)
diags = append(diags, moreDiags...)
content, _ := f.Body.Content(configSchema)

var locals []*LocalBlock

Expand Down
3 changes: 1 addition & 2 deletions hcl2template/types.required_plugins.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ import (
func (cfg *PackerConfig) decodeRequiredPluginsBlock(f *hcl.File) hcl.Diagnostics {
var diags hcl.Diagnostics

content, moreDiags := f.Body.Content(configSchema)
diags = append(diags, moreDiags...)
content, _ := f.Body.Content(configSchema)

for _, block := range content.Blocks {
switch block.Type {
Expand Down
Loading