Skip to content

Commit

Permalink
remove obsolete functions
Browse files Browse the repository at this point in the history
Signed-off-by: Nicolas De Loof <[email protected]>
  • Loading branch information
ndeloof committed Feb 21, 2025
1 parent 84b7d5a commit 12b4407
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 88 deletions.
10 changes: 5 additions & 5 deletions loader/extends_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ services:
assert.NilError(t, os.WriteFile(filepath.Join(tmpdir, "compose.yaml"), []byte(rootYAML), 0o600))

extendsCount := 0
actual, err := Load(types.ConfigDetails{
actual, err := LoadWithContext(context.Background(), types.ConfigDetails{
WorkingDir: tmpdir,
ConfigFiles: []types.ConfigFile{{
Filename: filepath.Join(tmpdir, "compose.yaml"),
Expand Down Expand Up @@ -428,7 +428,7 @@ func TestLoadExtendsListener(t *testing.T) {
last:
image: python`
extendsCount := 0
_, err := Load(buildConfigDetails(yaml, nil), func(options *Options) {
_, err := LoadWithContext(context.Background(), buildConfigDetails(yaml, nil), func(options *Options) {
options.SkipConsistencyCheck = true
options.SkipNormalization = true
options.ResolvePaths = true
Expand Down Expand Up @@ -470,7 +470,7 @@ services:
assert.NilError(t, os.WriteFile(filepath.Join(tmpdir, "compose.yaml"), []byte(rootYAML), 0o600))

extendsCount := 0
_, err := Load(types.ConfigDetails{
_, err := LoadWithContext(context.Background(), types.ConfigDetails{
WorkingDir: tmpdir,
ConfigFiles: []types.ConfigFile{{
Filename: filepath.Join(tmpdir, "compose.yaml"),
Expand Down Expand Up @@ -501,7 +501,7 @@ services:
file: testdata/extends/reset.yaml
service: base
`
p, err := Load(types.ConfigDetails{
p, err := LoadWithContext(context.Background(), types.ConfigDetails{
ConfigFiles: []types.ConfigFile{{
Content: []byte(yaml),
Filename: "-",
Expand All @@ -518,7 +518,7 @@ services:
test:
extends: { file: testdata/extends/interpolated.yaml, service: foo }
`
p, err := Load(types.ConfigDetails{
p, err := LoadWithContext(context.Background(), types.ConfigDetails{
ConfigFiles: []types.ConfigFile{{
Content: []byte(yaml),
Filename: "-",
Expand Down
14 changes: 7 additions & 7 deletions loader/include_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import (
)

func TestLoadIncludeExtendsCombined(t *testing.T) {
_, err := LoadWithContext(context.Background(), types.ConfigDetails{
_, err := LoadWithContext(context.TODO(), types.ConfigDetails{
WorkingDir: "testdata/combined",
ConfigFiles: []types.ConfigFile{
{
Expand Down Expand Up @@ -56,7 +56,7 @@ services:
- imported
`, map[string]string{"SOURCE": "override"})

p, err := Load(details, func(options *Options) {
p, err := LoadWithContext(context.TODO(), details, func(options *Options) {
options.SkipNormalization = true
options.ResolvePaths = true
})
Expand All @@ -82,7 +82,7 @@ services:
bar:
image: busybox
`, map[string]string{"SOURCE": "override"})
_, err := Load(details, func(options *Options) {
_, err := LoadWithContext(context.TODO(), details, func(options *Options) {
options.SkipNormalization = true
options.ResolvePaths = true
})
Expand All @@ -92,7 +92,7 @@ services:
func TestIncludeRelative(t *testing.T) {
wd, err := filepath.Abs(filepath.Join("testdata", "include"))
assert.NilError(t, err)
p, err := LoadWithContext(context.Background(), types.ConfigDetails{
p, err := LoadWithContext(context.TODO(), types.ConfigDetails{
ConfigFiles: []types.ConfigFile{
{
Filename: filepath.Join("testdata", "include", "compose.yaml"),
Expand Down Expand Up @@ -139,7 +139,7 @@ services:
- VAR_NAME`
createFileSubDir(t, tmpdir, "module", yaml, fileName)

p, err := Load(types.ConfigDetails{
p, err := LoadWithContext(context.TODO(), types.ConfigDetails{
WorkingDir: tmpdir,
ConfigFiles: []types.ConfigFile{{
Filename: path,
Expand Down Expand Up @@ -168,7 +168,7 @@ func TestIncludeWithProjectDirectory(t *testing.T) {
if runtime.GOOS == "windows" {
envs = map[string]string{"COMPOSE_CONVERT_WINDOWS_PATHS": "1"}
}
p, err := LoadWithContext(context.Background(), types.ConfigDetails{
p, err := LoadWithContext(context.TODO(), types.ConfigDetails{
WorkingDir: "testdata/include",
Environment: envs,
ConfigFiles: []types.ConfigFile{
Expand Down Expand Up @@ -209,7 +209,7 @@ services:
image: alpine
`
createFile(t, filepath.Join(tmpdir, "dir"), yaml, "extended.yaml")
p, err := Load(types.ConfigDetails{
p, err := LoadWithContext(context.TODO(), types.ConfigDetails{
WorkingDir: tmpdir,
ConfigFiles: []types.ConfigFile{{
Filename: path,
Expand Down
41 changes: 0 additions & 41 deletions loader/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -257,15 +257,6 @@ func WithProfiles(profiles []string) func(*Options) {
}
}

// ParseYAML reads the bytes from a file, parses the bytes into a mapping
// structure, and returns it.
func ParseYAML(source []byte) (map[string]interface{}, error) {
r := bytes.NewReader(source)
decoder := yaml.NewDecoder(r)
m, _, err := parseYAML(decoder)
return m, err
}

// PostProcessor is used to tweak compose model based on metadata extracted during yaml Unmarshal phase
// that hardly can be implemented using go-yaml and mapstructure
type PostProcessor interface {
Expand All @@ -275,32 +266,6 @@ type PostProcessor interface {
Apply(interface{}) error
}

func parseYAML(decoder *yaml.Decoder) (map[string]interface{}, PostProcessor, error) {
var cfg interface{}
processor := ResetProcessor{target: &cfg}

if err := decoder.Decode(&processor); err != nil {
return nil, nil, err
}
stringMap, ok := cfg.(map[string]interface{})
if ok {
converted, err := convertToStringKeysRecursive(stringMap, "")
if err != nil {
return nil, nil, err
}
return converted.(map[string]interface{}), &processor, nil
}
cfgMap, ok := cfg.(map[interface{}]interface{})
if !ok {
return nil, nil, errors.New("Top-level object must be a mapping")
}
converted, err := convertToStringKeysRecursive(cfgMap, "")
if err != nil {
return nil, nil, err
}
return converted.(map[string]interface{}), &processor, nil
}

// LoadConfigFiles ingests config files with ResourceLoader and returns config details with paths to local copies
func LoadConfigFiles(ctx context.Context, configFiles []string, workingDir string, options ...func(*Options)) (*types.ConfigDetails, error) {
if len(configFiles) < 1 {
Expand Down Expand Up @@ -353,12 +318,6 @@ func LoadConfigFiles(ctx context.Context, configFiles []string, workingDir strin
return config, nil
}

// Load reads a ConfigDetails and returns a fully loaded configuration.
// Deprecated: use LoadWithContext.
func Load(configDetails types.ConfigDetails, options ...func(*Options)) (*types.Project, error) {
return LoadWithContext(context.Background(), configDetails, options...)
}

// LoadWithContext reads a ConfigDetails and returns a fully loaded configuration as a compose-go Project
func LoadWithContext(ctx context.Context, configDetails types.ConfigDetails, options ...func(*Options)) (*types.Project, error) {
opts := toOptions(&configDetails, options)
Expand Down
54 changes: 24 additions & 30 deletions loader/loader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,14 +261,8 @@ var sampleConfig = types.Config{
},
}

func TestParseYAML(t *testing.T) {
dict, err := ParseYAML([]byte(sampleYAML))
assert.NilError(t, err)
assert.Check(t, is.DeepEqual(sampleDict, dict))
}

func TestLoad(t *testing.T) {
actual, err := Load(buildConfigDetails(sampleYAML, nil), func(options *Options) {
actual, err := LoadWithContext(context.TODO(), buildConfigDetails(sampleYAML, nil), func(options *Options) {
options.SkipNormalization = true
options.SkipConsistencyCheck = true
})
Expand All @@ -288,7 +282,7 @@ func TestLoadFromFile(t *testing.T) {
if err := os.WriteFile(tmpPath, []byte(sampleYAML), 0o444); err != nil {
t.Fatalf("failed to write temporary file: %s", err)
}
actual, err := Load(types.ConfigDetails{
actual, err := LoadWithContext(context.TODO(), types.ConfigDetails{
WorkingDir: workingDir,
ConfigFiles: []types.ConfigFile{{
Filename: tmpPath,
Expand Down Expand Up @@ -431,7 +425,7 @@ services:
`
assert.NilError(t, os.WriteFile(filepath.Join(tmpdir, "compose.yaml"), []byte(rootYAML), 0o600))

actual, err := Load(types.ConfigDetails{
actual, err := LoadWithContext(context.TODO(), types.ConfigDetails{
WorkingDir: tmpdir,
ConfigFiles: []types.ConfigFile{{
Filename: filepath.Join(tmpdir, "compose.yaml"),
Expand Down Expand Up @@ -813,7 +807,7 @@ networks:
"thesize": "2gb",
}

config, err := Load(buildConfigDetails(dict, env), func(options *Options) {
config, err := LoadWithContext(context.TODO(), buildConfigDetails(dict, env), func(options *Options) {
options.SkipNormalization = true
options.SkipConsistencyCheck = true
})
Expand Down Expand Up @@ -982,7 +976,7 @@ services:
`
configDetails := buildConfigDetails(dict, nil)

_, err := Load(configDetails)
_, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)
}

Expand All @@ -1007,7 +1001,7 @@ services:
configDetails := buildConfigDetails(dict, nil)

// Default behavior keeps the `env_file` entries
configWithEnvFiles, err := Load(configDetails, func(options *Options) {
configWithEnvFiles, err := LoadWithContext(context.TODO(), configDetails, func(options *Options) {
options.SkipNormalization = true
options.ResolvePaths = false
})
Expand All @@ -1024,7 +1018,7 @@ services:
assert.DeepEqual(t, configWithEnvFiles.Services["web"].Environment, expectedEnvironmentMap)

// Custom behavior removes the `env_file` entries
configWithoutEnvFiles, err := Load(configDetails, WithDiscardEnvFiles)
configWithoutEnvFiles, err := LoadWithContext(context.TODO(), configDetails, WithDiscardEnvFiles)
assert.NilError(t, err)
assert.Equal(t, len(configWithoutEnvFiles.Services["web"].EnvFiles), 0)
assert.DeepEqual(t, configWithoutEnvFiles.Services["web"].Environment, expectedEnvironmentMap)
Expand All @@ -1034,7 +1028,7 @@ func TestDecodeErrors(t *testing.T) {
dict := "name: test\nservices:\n web:\n image: nginx\n\tbuild: ."

configDetails := buildConfigDetails(dict, nil)
_, err := Load(configDetails)
_, err := LoadWithContext(context.TODO(), configDetails)
assert.Error(t, err, "yaml: line 4: found a tab character that violates indentation")
}

Expand All @@ -1054,7 +1048,7 @@ services:
shm_size: 2gb
`
configDetails := buildConfigDetails(dict, nil)
actual, err := Load(configDetails)
actual, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)

wd, _ := os.Getwd()
Expand Down Expand Up @@ -1084,7 +1078,7 @@ services:
`
configDetails := buildConfigDetails(dict, nil)

_, err := Load(configDetails)
_, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)
}

Expand Down Expand Up @@ -2145,7 +2139,7 @@ func TestLoadWithExtends(t *testing.T) {
Environment: map[string]string{},
}

actual, err := Load(configDetails)
actual, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)

extendsDir := filepath.Join("testdata", "subdir")
Expand Down Expand Up @@ -2189,7 +2183,7 @@ func TestLoadWithExtendsWithContextUrl(t *testing.T) {
Environment: map[string]string{},
}

actual, err := Load(configDetails)
actual, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)

expServices := types.Services{
Expand Down Expand Up @@ -2568,7 +2562,7 @@ services:
`
configDetails := buildConfigDetails(yaml, map[string]string{})

actual, err := Load(configDetails)
actual, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)
svc, err := actual.GetService("web")
assert.NilError(t, err)
Expand Down Expand Up @@ -2598,7 +2592,7 @@ services:
`
configDetails := buildConfigDetailsMultipleFiles(map[string]string{}, yaml1, yaml2, yaml3)

actual, err := Load(configDetails)
actual, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)
svc, err := actual.GetService("web")
assert.NilError(t, err)
Expand All @@ -2623,7 +2617,7 @@ services:
`
configDetails := buildConfigDetails(yaml, map[string]string{})

actual, err := Load(configDetails, withProjectName("interpolated", true))
actual, err := LoadWithContext(context.TODO(), configDetails, withProjectName("interpolated", true))
assert.NilError(t, err)
svc, err := actual.GetService("web")
assert.NilError(t, err)
Expand All @@ -2649,7 +2643,7 @@ volumes:
`
configDetails := buildConfigDetails(dict, nil)

project, err := Load(configDetails)
project, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)
path := project.Volumes["data"].DriverOpts["device"]
assert.Check(t, filepath.IsAbs(path))
Expand All @@ -2665,7 +2659,7 @@ services:
`
configDetails := buildConfigDetails(dict, nil)

project, err := Load(configDetails)
project, err := LoadWithContext(context.TODO(), configDetails)
assert.NilError(t, err)
assert.Equal(t, project.Services["extension"].Name, "extension")
assert.Equal(t, project.Services["extension"].Extensions["x-foo"], "bar")
Expand Down Expand Up @@ -2782,7 +2776,7 @@ configs:
func TestLoadWithInclude(t *testing.T) {
workingDir, err := os.Getwd()
assert.NilError(t, err)
p, err := Load(buildConfigDetails(`
p, err := LoadWithContext(context.TODO(), buildConfigDetails(`
name: 'test-include'
include:
Expand Down Expand Up @@ -2839,7 +2833,7 @@ services:
})
*/

p, err = Load(buildConfigDetails(`
p, err = LoadWithContext(context.TODO(), buildConfigDetails(`
name: 'test-include'
include:
Expand All @@ -2864,7 +2858,7 @@ services:
func TestLoadWithIncludeCycle(t *testing.T) {
workingDir, err := os.Getwd()
assert.NilError(t, err)
_, err = Load(types.ConfigDetails{
_, err = LoadWithContext(context.TODO(), types.ConfigDetails{
WorkingDir: filepath.Join(workingDir, "testdata"),
ConfigFiles: []types.ConfigFile{
{
Expand All @@ -2876,7 +2870,7 @@ func TestLoadWithIncludeCycle(t *testing.T) {
}

func TestLoadWithIncludeOverride(t *testing.T) {
p, err := Load(buildConfigDetailsMultipleFiles(nil, `
p, err := LoadWithContext(context.TODO(), buildConfigDetailsMultipleFiles(nil, `
name: 'test-include-override'
include:
Expand Down Expand Up @@ -3097,7 +3091,7 @@ services:
}

func TestLoadDevelopConfig(t *testing.T) {
project, err := Load(buildConfigDetails(`
project, err := LoadWithContext(context.TODO(), buildConfigDetails(`
name: load-develop
services:
frontend:
Expand Down Expand Up @@ -3225,7 +3219,7 @@ services:
if err := os.WriteFile(tmpPath, []byte(yaml), 0o644); err != nil {
t.Fatalf("failed to write temporary file: %s", err)
}
_, err := Load(types.ConfigDetails{
_, err := LoadWithContext(context.TODO(), types.ConfigDetails{
ConfigFiles: []types.ConfigFile{
{
Filename: tmpPath,
Expand All @@ -3246,7 +3240,7 @@ services:
if err := os.WriteFile(tmpPath, []byte(yaml), 0o644); err != nil {
t.Fatalf("failed to write temporary file: %s", err)
}
_, err := Load(types.ConfigDetails{
_, err := LoadWithContext(context.TODO(), types.ConfigDetails{
ConfigFiles: []types.ConfigFile{
{
Filename: tmpPath,
Expand Down
Loading

0 comments on commit 12b4407

Please sign in to comment.