func parseConfigFile(filename string) (*OcicryptConfig, error) {
	_, err := os.Stat(filename)
	if os.IsNotExist(err) {
		return nil, nil
	}
	data, err := ioutil.ReadFile(filename)
	if err != nil {
		return nil, err
	}
	ic := &OcicryptConfig{}
	err = json.Unmarshal(data, ic)
	return ic, err
}
parseConfigFile parses a configuration file; it is not an error if the configuration file does
not exist, so no error is returned.
package config
import (
	"encoding/json"
	"github.com/pkg/errors"
	"io/ioutil"
	"os"
)
type Command struct {
	Path string   `json:"path,omitempty"`
	Args []string `json:"args,omitempty"`
}
type KeyProviderAttrs struct {
	Command *Command `json:"cmd,omitempty"`
	Grpc    string   `json:"grpc,omitempty"`
}
type OcicryptConfig struct {
	KeyProviderConfig map[string]KeyProviderAttrs `json:"key-providers"`
}
const ENVVARNAME = "OCICRYPT_KEYPROVIDER_CONFIG"