internal/configprovider/file.go (39 lines of code) (raw):

package configprovider import ( "fmt" "io" "os" internalapi "github.com/aws/eks-hybrid/internal/api" apibridge "github.com/aws/eks-hybrid/internal/api/bridge" ) type fileConfigProvider struct { path string } func NewFileConfigProvider(path string) ConfigProvider { return &fileConfigProvider{ path: path, } } func (fcs *fileConfigProvider) Provide() (*internalapi.NodeConfig, error) { file, err := os.Open(fcs.path) if err != nil { return nil, err } defer file.Close() info, err := file.Stat() if err != nil { return nil, err } if info.IsDir() { return nil, fmt.Errorf("path is a directory, which is not currently supported: %s", fcs.path) } data, err := io.ReadAll(file) if err != nil { return nil, err } config, err := apibridge.DecodeStrictNodeConfig(data) if err != nil { return nil, err } return config, nil }