From f55a918e7e8c52582d62009c539aea0d7885be73 Mon Sep 17 00:00:00 2001 From: Jon Johnson Date: Fri, 5 Jan 2024 14:39:09 -0800 Subject: [PATCH] Return better error messages for missing config Signed-off-by: Jon Johnson --- pkg/build/types/image_configuration.go | 30 ++++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/pkg/build/types/image_configuration.go b/pkg/build/types/image_configuration.go index 3720afb0e..977360182 100644 --- a/pkg/build/types/image_configuration.go +++ b/pkg/build/types/image_configuration.go @@ -97,19 +97,31 @@ func (ic *ImageConfiguration) parse(configData []byte, logger log.Logger) error return nil } -// Loads an image configuration given a configuration file path. -func (ic *ImageConfiguration) Load(imageConfigPath string, logger log.Logger) error { - data, err := os.ReadFile(imageConfigPath) - if err == nil { - return ic.parse(data, logger) +func (ic *ImageConfiguration) maybeLoadRemote(imageConfigPath string, logger log.Logger) error { + data, err := fetch.Fetch(imageConfigPath) + if err != nil { + return fmt.Errorf("unable to fetch remote include from git: %w", err) } - // At this point, we're doing a remote config file. - logger.Warnf("remote configurations are an experimental feature and subject to change.") + return ic.parse(data, logger) +} - data, err = fetch.Fetch(imageConfigPath) +// Loads an image configuration given a configuration file path. +func (ic *ImageConfiguration) Load(imageConfigPath string, logger log.Logger) error { + data, err := os.ReadFile(imageConfigPath) if err != nil { - return fmt.Errorf("unable to fetch remote include from git: %w", err) + logger.Warnf("loading config file failed: %v", err) + logger.Warnf("attempting to load remote configuration") + logger.Warnf("NOTE: remote configurations are an experimental feature and subject to change.") + + if err := ic.maybeLoadRemote(imageConfigPath, logger); err == nil { + return nil + } else { + // At this point, we're doing a remote config file. + logger.Warnf("loading remote configuration failed: %v", err) + } + + return err } return ic.parse(data, logger)