37 lines
992 B
Go
37 lines
992 B
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package clicontext
|
|
|
|
import (
|
|
"io"
|
|
|
|
"github.com/hashicorp/hcl/v2/gohcl"
|
|
"github.com/hashicorp/hcl/v2/hclsimple"
|
|
"github.com/hashicorp/hcl/v2/hclwrite"
|
|
|
|
"github.com/hashicorp/vagrant-plugin-sdk/helper/path"
|
|
"github.com/hashicorp/vagrant/internal/serverconfig"
|
|
)
|
|
|
|
// Config is the structure of the context configuration file. This structure
|
|
// can be decoded with hclsimple.DecodeFile.
|
|
type Config struct {
|
|
// Server is the configuration to talk to a Vagrant server.
|
|
Server serverconfig.Client `hcl:"server,block"`
|
|
}
|
|
|
|
// LoadPath loads a context configuration from a filepath.
|
|
func LoadPath(p path.Path) (*Config, error) {
|
|
var cfg Config
|
|
err := hclsimple.DecodeFile(p.String(), nil, &cfg)
|
|
return &cfg, err
|
|
}
|
|
|
|
// WriteTo implements io.WriterTo and encodes this config as HCL.
|
|
func (c *Config) WriteTo(w io.Writer) (int64, error) {
|
|
f := hclwrite.NewFile()
|
|
gohcl.EncodeIntoBody(c, f.Body())
|
|
return f.WriteTo(w)
|
|
}
|