package hclsimple_test import ( "fmt" "log" "reflect" "testing" "github.com/hashicorp/hcl/v2/hclsimple" ) func Example_nativeSyntax() { type Config struct { Foo string `hcl:"foo"` Baz string `hcl:"baz"` } const exampleConfig = ` foo = "bar" baz = "boop" ` var config Config err := hclsimple.Decode( "example.hcl", []byte(exampleConfig), nil, &config, ) if err != nil { log.Fatalf("Failed to load configuration: %s", err) } fmt.Printf("Configuration is %v\n", config) // Output: // Configuration is {bar boop} } func Example_jsonSyntax() { type Config struct { Foo string `hcl:"foo"` Baz string `hcl:"baz"` } const exampleConfig = ` { "foo": "bar", "baz": "boop" } ` var config Config err := hclsimple.Decode( "example.json", []byte(exampleConfig), nil, &config, ) if err != nil { log.Fatalf("Failed to load configuration: %s", err) } fmt.Printf("Configuration is %v\n", config) // Output: // Configuration is {bar boop} } func TestDecodeFile(t *testing.T) { type Config struct { Foo string `hcl:"foo"` Baz string `hcl:"baz"` } var got Config err := hclsimple.DecodeFile("testdata/test.hcl", nil, &got) if err != nil { t.Fatalf("unexpected error(s): %s", err) } want := Config{ Foo: "bar", Baz: "boop", } if !reflect.DeepEqual(got, want) { t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, want) } }