// Copyright (C) The Arvados Authors. All rights reserved.
//
// SPDX-License-Identifier: Apache-2.0

package config

import (
	"fmt"
	"io/ioutil"

	"github.com/ghodss/yaml"
)

// LoadFile loads configuration from the file given by configPath and
// decodes it into cfg.
//
// YAML and JSON formats are supported.
func LoadFile(cfg interface{}, configPath string) error {
	buf, err := ioutil.ReadFile(configPath)
	if err != nil {
		return err
	}
	err = yaml.Unmarshal(buf, cfg)
	if err != nil {
		return fmt.Errorf("Error decoding config %q: %v", configPath, err)
	}
	return nil
}

// Dump returns a YAML representation of cfg.
func Dump(cfg interface{}) ([]byte, error) {
	return yaml.Marshal(cfg)
}