130 lines
2.5 KiB
Go
130 lines
2.5 KiB
Go
package hclpack_test
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/hashicorp/hcl2/hcl"
|
|
"github.com/hashicorp/hcl2/hclpack"
|
|
)
|
|
|
|
func Example_marshalJSON() {
|
|
src := `
|
|
service "example" {
|
|
priority = 2
|
|
platform {
|
|
os = "linux"
|
|
arch = "amd64"
|
|
}
|
|
process "web" {
|
|
exec = ["./webapp"]
|
|
}
|
|
process "worker" {
|
|
exec = ["./worker"]
|
|
}
|
|
}
|
|
`
|
|
|
|
body, diags := hclpack.PackNativeFile([]byte(src), "example.svc", hcl.Pos{Line: 1, Column: 1})
|
|
if diags.HasErrors() {
|
|
fmt.Fprintf(os.Stderr, "Failed to parse: %s", diags.Error())
|
|
return
|
|
}
|
|
|
|
jb, err := body.MarshalJSON()
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "Failed to marshal: %s", err)
|
|
return
|
|
}
|
|
|
|
// Normally the compact form is best, but we'll indent just for the sake
|
|
// of this example so the result is readable.
|
|
var buf bytes.Buffer
|
|
json.Indent(&buf, jb, "", " ")
|
|
os.Stdout.Write(buf.Bytes())
|
|
|
|
// Output:
|
|
// {
|
|
// "r": {
|
|
// "b": [
|
|
// {
|
|
// "h": [
|
|
// "service",
|
|
// "example"
|
|
// ],
|
|
// "b": {
|
|
// "a": {
|
|
// "priority": {
|
|
// "s": "2",
|
|
// "r": "ChAKDA4QDhA"
|
|
// }
|
|
// },
|
|
// "b": [
|
|
// {
|
|
// "h": [
|
|
// "platform"
|
|
// ],
|
|
// "b": {
|
|
// "a": {
|
|
// "arch": {
|
|
// "s": "\"amd64\"",
|
|
// "r": "IiwiJCYsKCo"
|
|
// },
|
|
// "os": {
|
|
// "s": "\"linux\"",
|
|
// "r": "FiAWGBogHB4"
|
|
// }
|
|
// },
|
|
// "r": "Li4"
|
|
// },
|
|
// "r": "EhQSFA"
|
|
// },
|
|
// {
|
|
// "h": [
|
|
// "process",
|
|
// "web"
|
|
// ],
|
|
// "b": {
|
|
// "a": {
|
|
// "exec": {
|
|
// "s": "[\"./webapp\"]",
|
|
// "r": "OEA4OjxAPD4"
|
|
// }
|
|
// },
|
|
// "r": "QkI"
|
|
// },
|
|
// "r": "MDYwMjQ2"
|
|
// },
|
|
// {
|
|
// "h": [
|
|
// "process",
|
|
// "worker"
|
|
// ],
|
|
// "b": {
|
|
// "a": {
|
|
// "exec": {
|
|
// "s": "[\"./worker\"]",
|
|
// "r": "TFRMTlBUUFI"
|
|
// }
|
|
// },
|
|
// "r": "VlY"
|
|
// },
|
|
// "r": "REpERkhK"
|
|
// }
|
|
// ],
|
|
// "r": "WFg"
|
|
// },
|
|
// "r": "AggCBAYI"
|
|
// }
|
|
// ],
|
|
// "r": "Wlo"
|
|
// },
|
|
// "s": [
|
|
// "example.svc"
|
|
// ],
|
|
// "p": "BAQEAA4OAAICABISAggMABAQAAYGAAICAggIABAQAgYKAAQEAAoKAAICAAoKAAICAgYGAAgIAAYGAAICAAoKAAICAgoKAggIAA4OAAICAAoKAgwQAAgIAAYGAAICABYWAgoKAggIAA4OAAICABAQAgwQAAgIAAYGAAICABYWAgoKAgYGAgQE"
|
|
// }
|
|
}
|