Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove obsolete functions #743

Merged
merged 1 commit into from
Feb 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading