Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit c0c9cd6

Browse files
chris-cronesilvin-lubecki
authored andcommitted
Return error if app bundle contains settings.yml but not parameters.yml
Signed-off-by: Christopher Crone <christopher.crone@docker.com>
1 parent 012141a commit c0c9cd6

3 files changed

Lines changed: 22 additions & 0 deletions

File tree

internal/names.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ const (
1818
ComposeFileName = "docker-compose.yml"
1919
// ParametersFileName is parameters file name
2020
ParametersFileName = "parameters.yml"
21+
22+
// DeprecatedSettingsFileName is the deprecated settings file name (replaced by ParametersFileName)
23+
DeprecatedSettingsFileName = "settings.yml"
2124
)
2225

2326
var (

loader/loader.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import (
55
"io/ioutil"
66
"net/http"
77
"os"
8+
"path/filepath"
89
"strings"
910

11+
"github.com/docker/app/internal"
1012
"github.com/docker/app/types"
1113
"github.com/docker/docker/pkg/archive"
1214
"github.com/pkg/errors"
@@ -53,6 +55,11 @@ func LoadFromSingleFile(path string, r io.Reader, ops ...func(*types.App) error)
5355

5456
// LoadFromDirectory loads a docker app from a directory
5557
func LoadFromDirectory(path string, ops ...func(*types.App) error) (*types.App, error) {
58+
if _, err := os.Stat(filepath.Join(path, internal.ParametersFileName)); os.IsNotExist(err) {
59+
if _, err := os.Stat(filepath.Join(path, internal.DeprecatedSettingsFileName)); err == nil {
60+
return nil, errors.Errorf("\"settings.yml\" has been deprecated in favor of \"parameters.yml\"; please rename \"settings.yml\" to \"parameters.yml\"")
61+
}
62+
}
5663
return types.NewAppFromDefaultFiles(path, ops...)
5764
}
5865

loader/loader_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,18 @@ func TestLoadFromDirectory(t *testing.T) {
6666
assertAppContent(t, app)
6767
}
6868

69+
func TestLoadFromDirectoryDeprecatedSettings(t *testing.T) {
70+
dir := fs.NewDir(t, "my-app",
71+
fs.WithFile(internal.MetadataFileName, metadata),
72+
fs.WithFile(internal.DeprecatedSettingsFileName, parameters),
73+
fs.WithFile(internal.ComposeFileName, yaml),
74+
)
75+
defer dir.Remove()
76+
app, err := LoadFromDirectory(dir.Path())
77+
assert.Assert(t, app == nil)
78+
assert.ErrorContains(t, err, "\"settings.yml\" has been deprecated in favor of \"parameters.yml\"; please rename \"settings.yml\" to \"parameters.yml\"")
79+
}
80+
6981
func TestLoadFromTarInexistent(t *testing.T) {
7082
_, err := LoadFromTar("any-tar.tar")
7183
assert.ErrorContains(t, err, "open any-tar.tar")

0 commit comments

Comments
 (0)