Skip to content

Commit

Permalink
always test to load config with localFileLoader
Browse files Browse the repository at this point in the history
and pass workdir to LoadConfigFiles func to setup ConfigDetails

Signed-off-by: Guillaume Lours <[email protected]>
  • Loading branch information
glours committed Oct 22, 2024
1 parent 8948716 commit b5c8e72
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
6 changes: 3 additions & 3 deletions cli/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,8 @@ func (o *ProjectOptions) GetWorkingDir() (string, error) {
}

// ReadConfigFiles reads ConfigFiles and populates the content field
func (o ProjectOptions) ReadConfigFiles(ctx context.Context, options *ProjectOptions) (*types.ConfigDetails, error) {
config, err := loader.LoadConfigFiles(ctx, options.ConfigPaths, options.loadOptions...)
func (o *ProjectOptions) ReadConfigFiles(ctx context.Context, workingDir string, options *ProjectOptions) (*types.ConfigDetails, error) {
config, err := loader.LoadConfigFiles(ctx, options.ConfigPaths, workingDir, options.loadOptions...)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -477,7 +477,7 @@ func (o *ProjectOptions) prepare(ctx context.Context) (*types.ConfigDetails, err
return &types.ConfigDetails{}, err
}

configDetails, err := o.ReadConfigFiles(ctx, o)
configDetails, err := o.ReadConfigFiles(ctx, defaultDir, o)
if err != nil {
return configDetails, err
}
Expand Down
14 changes: 8 additions & 6 deletions loader/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
"strings"

"github.com/compose-spec/compose-go/v2/consts"
"github.com/compose-spec/compose-go/v2/errdefs"
interp "github.com/compose-spec/compose-go/v2/interpolation"
"github.com/compose-spec/compose-go/v2/override"
"github.com/compose-spec/compose-go/v2/paths"
Expand Down Expand Up @@ -139,9 +140,9 @@ func (l localResourceLoader) abs(p string) string {
return filepath.Join(l.WorkingDir, p)
}

func (l localResourceLoader) Accept(p string) bool {
_, err := os.Stat(l.abs(p))
return err == nil
func (l localResourceLoader) Accept(_ string) bool {
// LocalResourceLoader is the last loader tested so it always should accept the config and try to get the content.
return true
}

func (l localResourceLoader) Load(_ context.Context, p string) (string, error) {
Expand Down Expand Up @@ -301,14 +302,15 @@ func parseYAML(decoder *yaml.Decoder) (map[string]interface{}, PostProcessor, er
}

// LoadConfigFiles ingests config files with ResourceLoader and returns config details with paths to local copies
func LoadConfigFiles(ctx context.Context, configFiles []string, options ...func(*Options)) (*types.ConfigDetails, error) {
func LoadConfigFiles(ctx context.Context, configFiles []string, workingDir string, options ...func(*Options)) (*types.ConfigDetails, error) {
if len(configFiles) < 1 {
return &types.ConfigDetails{}, errors.New("no files specified")
return &types.ConfigDetails{}, fmt.Errorf("no configuration file provided: %w", errdefs.ErrNotFound)
}

opts := &Options{}
config := &types.ConfigDetails{
ConfigFiles: make([]types.ConfigFile, len(configFiles)),
WorkingDir: workingDir,
}

for _, op := range options {
Expand All @@ -326,7 +328,7 @@ func LoadConfigFiles(ctx context.Context, configFiles []string, options ...func(
continue
}
if config.WorkingDir == "" {
config.WorkingDir = filepath.Dir(local)
config.WorkingDir = workingDir

}
abs, err := filepath.Abs(local)
Expand Down

0 comments on commit b5c8e72

Please sign in to comment.