3327dee567
This is in preparation for the first v2 release from the main HCL repository.
65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package gohcl_test
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/hcl/v2/gohcl"
|
|
"github.com/hashicorp/hcl/v2/hclwrite"
|
|
)
|
|
|
|
func ExampleEncodeIntoBody() {
|
|
type Service struct {
|
|
Name string `hcl:"name,label"`
|
|
Exe []string `hcl:"executable"`
|
|
}
|
|
type Constraints struct {
|
|
OS string `hcl:"os"`
|
|
Arch string `hcl:"arch"`
|
|
}
|
|
type App struct {
|
|
Name string `hcl:"name"`
|
|
Desc string `hcl:"description"`
|
|
Constraints *Constraints `hcl:"constraints,block"`
|
|
Services []Service `hcl:"service,block"`
|
|
}
|
|
|
|
app := App{
|
|
Name: "awesome-app",
|
|
Desc: "Such an awesome application",
|
|
Constraints: &Constraints{
|
|
OS: "linux",
|
|
Arch: "amd64",
|
|
},
|
|
Services: []Service{
|
|
{
|
|
Name: "web",
|
|
Exe: []string{"./web", "--listen=:8080"},
|
|
},
|
|
{
|
|
Name: "worker",
|
|
Exe: []string{"./worker"},
|
|
},
|
|
},
|
|
}
|
|
|
|
f := hclwrite.NewEmptyFile()
|
|
gohcl.EncodeIntoBody(&app, f.Body())
|
|
fmt.Printf("%s", f.Bytes())
|
|
|
|
// Output:
|
|
// name = "awesome-app"
|
|
// description = "Such an awesome application"
|
|
//
|
|
// constraints {
|
|
// os = "linux"
|
|
// arch = "amd64"
|
|
// }
|
|
//
|
|
// service "web" {
|
|
// executable = ["./web", "--listen=:8080"]
|
|
// }
|
|
// service "worker" {
|
|
// executable = ["./worker"]
|
|
// }
|
|
}
|