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

Commit e4553c5

Browse files
authored
Merge pull request #248 from silvin-lubecki/refactor-filenames
Factorize the 3 file names used in docker-app
2 parents 450c1f3 + b143caf commit e4553c5

12 files changed

Lines changed: 50 additions & 40 deletions

File tree

e2e/binary_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ targets:
174174
envData := "# some comment\nNGINX_VERSION=latest"
175175
inputDir := randomName("app_input_")
176176
os.Mkdir(inputDir, 0755)
177-
ioutil.WriteFile(filepath.Join(inputDir, "docker-compose.yml"), []byte(composeData), 0644)
177+
ioutil.WriteFile(filepath.Join(inputDir, internal.ComposeFileName), []byte(composeData), 0644)
178178
ioutil.WriteFile(filepath.Join(inputDir, ".env"), []byte(envData), 0644)
179179
defer os.RemoveAll(inputDir)
180180

@@ -186,7 +186,7 @@ targets:
186186
"init",
187187
testAppName,
188188
"-c",
189-
filepath.Join(inputDir, "docker-compose.yml"),
189+
filepath.Join(inputDir, internal.ComposeFileName),
190190
"-d",
191191
"my cool app",
192192
"-m", "bob",
@@ -196,9 +196,9 @@ targets:
196196
manifest := fs.Expected(
197197
t,
198198
fs.WithMode(0755),
199-
fs.WithFile("metadata.yml", meta, fs.WithMode(0644)), // too many variables, cheating
200-
fs.WithFile("docker-compose.yml", composeData, fs.WithMode(0644)),
201-
fs.WithFile("settings.yml", "NGINX_ARGS: FILL ME\nNGINX_VERSION: latest\n", fs.WithMode(0644)),
199+
fs.WithFile(internal.MetadataFileName, meta, fs.WithMode(0644)), // too many variables, cheating
200+
fs.WithFile(internal.ComposeFileName, composeData, fs.WithMode(0644)),
201+
fs.WithFile(internal.SettingsFileName, "NGINX_ARGS: FILL ME\nNGINX_VERSION: latest\n", fs.WithMode(0644)),
202202
)
203203

204204
assert.Assert(t, fs.Equal(dirName, manifest))
@@ -208,7 +208,7 @@ targets:
208208
"init",
209209
"tac",
210210
"-c",
211-
filepath.Join(inputDir, "docker-compose.yml"),
211+
filepath.Join(inputDir, internal.ComposeFileName),
212212
"-d",
213213
"my cool app",
214214
"-m", "bob",

internal/names.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,17 @@ const (
1212
AppExtension = ".dockerapp"
1313
// The label used to distinguish applications from Docker images.
1414
ImageLabel = "com.docker.application"
15+
// MetadataFileName is metadata file name
16+
MetadataFileName = "metadata.yml"
17+
// ComposeFileName is compose file name
18+
ComposeFileName = "docker-compose.yml"
19+
// SettingsFileName is settings file name
20+
SettingsFileName = "settings.yml"
21+
)
22+
23+
var (
24+
// Application file names, in order.
25+
FileNames = []string{MetadataFileName, ComposeFileName, SettingsFileName}
1526
)
1627

1728
var appNameRe, _ = regexp.Compile("^[a-zA-Z][a-zA-Z0-9_-]+$")

internal/packager/extract.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ func extractSingleFile(appname, appDir string) error {
153153
if len(parts) != 3 {
154154
return fmt.Errorf("malformed single-file application: expected 3 documents")
155155
}
156-
names := []string{"metadata.yml", "docker-compose.yml", "settings.yml"}
157156
for i, p := range parts {
158157
data := ""
159158
if i == 0 {
@@ -164,7 +163,7 @@ func extractSingleFile(appname, appDir string) error {
164163
data = d[1]
165164
}
166165
}
167-
err = ioutil.WriteFile(filepath.Join(appDir, names[i]), []byte(data), 0644)
166+
err = ioutil.WriteFile(filepath.Join(appDir, internal.FileNames[i]), []byte(data), 0644)
168167
if err != nil {
169168
return errors.Wrap(err, "failed to write application file")
170169
}

internal/packager/init.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ func Init(name string, composeFile string, description string, maintainers []str
4545
}
4646

4747
if composeFile == "" {
48-
if _, err := os.Stat("docker-compose.yml"); err == nil {
49-
composeFile = "docker-compose.yml"
48+
if _, err := os.Stat(internal.ComposeFileName); err == nil {
49+
composeFile = internal.ComposeFileName
5050
}
5151
}
5252
if composeFile == "" {
@@ -62,9 +62,9 @@ func Init(name string, composeFile string, description string, maintainers []str
6262
}
6363
// Merge as a single file
6464
// Add some helfpful comments to distinguish the sections
65-
prependToFile(filepath.Join(dirName, "docker-compose.yml"), "# This section contains the Compose file that describes your application services.\n")
66-
prependToFile(filepath.Join(dirName, "settings.yml"), "# This section contains the default values for your application settings.\n")
67-
prependToFile(filepath.Join(dirName, "metadata.yml"), "# This section contains your application metadata.\n")
65+
prependToFile(filepath.Join(dirName, internal.ComposeFileName), "# This section contains the Compose file that describes your application services.\n")
66+
prependToFile(filepath.Join(dirName, internal.SettingsFileName), "# This section contains the default values for your application settings.\n")
67+
prependToFile(filepath.Join(dirName, internal.MetadataFileName), "# This section contains your application metadata.\n")
6868
temp := "_temp_dockerapp__.dockerapp"
6969
err = os.Rename(dirName, temp)
7070
if err != nil {
@@ -89,10 +89,10 @@ func initFromScratch(name string) error {
8989

9090
dirName := internal.DirNameFromAppName(name)
9191

92-
if err := ioutil.WriteFile(filepath.Join(dirName, "docker-compose.yml"), composeData, 0644); err != nil {
92+
if err := ioutil.WriteFile(filepath.Join(dirName, internal.ComposeFileName), composeData, 0644); err != nil {
9393
return err
9494
}
95-
return ioutil.WriteFile(filepath.Join(dirName, "settings.yml"), []byte{'\n'}, 0644)
95+
return ioutil.WriteFile(filepath.Join(dirName, internal.SettingsFileName), []byte{'\n'}, 0644)
9696
}
9797

9898
func parseEnv(env string, target map[string]string) {
@@ -213,11 +213,11 @@ func initFromComposeFile(name string, composeFile string) error {
213213
if err != nil {
214214
return errors.Wrap(err, "failed to marshal settings")
215215
}
216-
err = ioutil.WriteFile(filepath.Join(dirName, "docker-compose.yml"), composeRaw, 0644)
216+
err = ioutil.WriteFile(filepath.Join(dirName, internal.ComposeFileName), composeRaw, 0644)
217217
if err != nil {
218218
return errors.Wrap(err, "failed to write docker-compose.yml")
219219
}
220-
err = ioutil.WriteFile(filepath.Join(dirName, "settings.yml"), settingsYAML, 0644)
220+
err = ioutil.WriteFile(filepath.Join(dirName, internal.SettingsFileName), settingsYAML, 0644)
221221
if err != nil {
222222
return errors.Wrap(err, "failed to write settings.yml")
223223
}
@@ -263,7 +263,7 @@ func writeMetadataFile(name, dirName string, description string, maintainers []s
263263
if err := tmpl.Execute(resBuf, meta); err != nil {
264264
return errors.Wrap(err, "error generating metadata")
265265
}
266-
return ioutil.WriteFile(filepath.Join(dirName, "metadata.yml"), resBuf.Bytes(), 0644)
266+
return ioutil.WriteFile(filepath.Join(dirName, internal.MetadataFileName), resBuf.Bytes(), 0644)
267267
}
268268

269269
func newMetadata(name string, description string, maintainers []string) types.AppMetadata {

internal/packager/init_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestInitFromComposeFile(t *testing.T) {
3232
envData := "# some comment\nNGINX_VERSION=latest"
3333
inputDir := randomName("app_input_")
3434
os.Mkdir(inputDir, 0755)
35-
ioutil.WriteFile(filepath.Join(inputDir, "docker-compose.yml"), []byte(composeData), 0644)
35+
ioutil.WriteFile(filepath.Join(inputDir, internal.ComposeFileName), []byte(composeData), 0644)
3636
ioutil.WriteFile(filepath.Join(inputDir, ".env"), []byte(envData), 0644)
3737
defer os.RemoveAll(inputDir)
3838

@@ -42,14 +42,14 @@ func TestInitFromComposeFile(t *testing.T) {
4242
assert.NilError(t, err)
4343
defer os.RemoveAll(dirName)
4444

45-
err = initFromComposeFile(testAppName, filepath.Join(inputDir, "docker-compose.yml"))
45+
err = initFromComposeFile(testAppName, filepath.Join(inputDir, internal.ComposeFileName))
4646
assert.NilError(t, err)
4747

4848
manifest := fs.Expected(
4949
t,
5050
fs.WithMode(0755),
51-
fs.WithFile("docker-compose.yml", composeData, fs.WithMode(0644)),
52-
fs.WithFile("settings.yml", "NGINX_ARGS: FILL ME\nNGINX_VERSION: latest\n", fs.WithMode(0644)),
51+
fs.WithFile(internal.ComposeFileName, composeData, fs.WithMode(0644)),
52+
fs.WithFile(internal.SettingsFileName, "NGINX_ARGS: FILL ME\nNGINX_VERSION: latest\n", fs.WithMode(0644)),
5353
)
5454

5555
assert.Assert(t, fs.Equal(dirName, manifest))
@@ -95,7 +95,7 @@ targets:
9595

9696
manifest := fs.Expected(
9797
t,
98-
fs.WithFile("metadata.yml", data, fs.WithMode(0644)),
98+
fs.WithFile(internal.MetadataFileName, data, fs.WithMode(0644)),
9999
)
100100
assert.Assert(t, fs.Equal(tmpdir.Path(), manifest))
101101
}

internal/packager/packing.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ func tarAddDir(tarout *tar.Writer, path string) error {
4343
// Pack packs the app as a single file
4444
func Pack(appname string, target io.Writer) error {
4545
tarout := tar.NewWriter(target)
46-
files := []string{"metadata.yml", "docker-compose.yml", "settings.yml"}
47-
for _, f := range files {
46+
for _, f := range internal.FileNames {
4847
err := tarAdd(tarout, f, filepath.Join(appname, f))
4948
if err != nil {
5049
return err

internal/packager/registry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func Save(appname, namespace, tag string) (string, error) {
2828
return "", err
2929
}
3030
defer cleanup()
31-
metaFile := filepath.Join(appname, "metadata.yml")
31+
metaFile := filepath.Join(appname, internal.MetadataFileName)
3232
metaContent, err := ioutil.ReadFile(metaFile)
3333
if err != nil {
3434
return "", errors.Wrap(err, "failed to read application metadata")

internal/packager/split.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"io/ioutil"
66
"os"
77
"path/filepath"
8+
9+
"github.com/docker/app/internal"
810
)
911

1012
// Split converts an app package to the split version
@@ -13,8 +15,7 @@ func Split(appname string, outputDir string) error {
1315
if err != nil {
1416
return err
1517
}
16-
names := []string{"metadata.yml", "docker-compose.yml", "settings.yml"}
17-
for _, n := range names {
18+
for _, n := range internal.FileNames {
1819
input, err := ioutil.ReadFile(filepath.Join(appname, n))
1920
if err != nil {
2021
return err
@@ -29,8 +30,7 @@ func Split(appname string, outputDir string) error {
2930

3031
// Merge converts an app-package to the single-file merged version
3132
func Merge(appname string, target io.Writer) error {
32-
names := []string{"metadata.yml", "docker-compose.yml", "settings.yml"}
33-
for i, n := range names {
33+
for i, n := range internal.FileNames {
3434
input, err := ioutil.ReadFile(filepath.Join(appname, n))
3535
if err != nil {
3636
return err

internal/renderer/helm.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func convertTemplates(dict map[interface{}]interface{}) error {
173173
}
174174

175175
func makeChart(appname, targetDir string) error {
176-
metaFile := filepath.Join(appname, "metadata.yml")
176+
metaFile := filepath.Join(appname, internal.MetadataFileName)
177177
metaContent, err := ioutil.ReadFile(metaFile)
178178
if err != nil {
179179
return errors.Wrap(err, "failed to read application metadata")
@@ -286,7 +286,7 @@ func Helm(appname string, composeFiles []string, settingsFile []string, env map[
286286
if render {
287287
return helmRender(appname, targetDir, composeFiles, settingsFile, env)
288288
}
289-
data, err := ioutil.ReadFile(filepath.Join(appname, "docker-compose.yml"))
289+
data, err := ioutil.ReadFile(filepath.Join(appname, internal.ComposeFileName))
290290
if err != nil {
291291
return errors.Wrap(err, "failed to read application Compose file")
292292
}
@@ -304,13 +304,13 @@ func Helm(appname string, composeFiles []string, settingsFile []string, env map[
304304
// makeValues updates helm values.yaml with used variables from settings and env
305305
func makeValues(appname, targetDir string, settingsFile []string, env map[string]string, variables []string) error {
306306
// merge our variables into Values.yaml
307-
sf := []string{filepath.Join(appname, "settings.yml")}
307+
sf := []string{filepath.Join(appname, internal.SettingsFileName)}
308308
sf = append(sf, settingsFile...)
309309
settings, err := loadSettings(sf)
310310
if err != nil {
311311
return err
312312
}
313-
metaFile := filepath.Join(appname, "metadata.yml")
313+
metaFile := filepath.Join(appname, internal.MetadataFileName)
314314
meta := make(map[interface{}]interface{})
315315
metaContent, err := ioutil.ReadFile(metaFile)
316316
if err != nil {

internal/renderer/inspect.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ import (
88
"sort"
99
"text/tabwriter"
1010

11+
"github.com/docker/app/internal"
1112
"github.com/docker/app/internal/types"
1213
"github.com/pkg/errors"
1314
yaml "gopkg.in/yaml.v2"
1415
)
1516

1617
// Inspect dumps the metadata of an app
1718
func Inspect(out io.Writer, appname string) error {
18-
metaFile := filepath.Join(appname, "metadata.yml")
19+
metaFile := filepath.Join(appname, internal.MetadataFileName)
1920
metaContent, err := ioutil.ReadFile(metaFile)
2021
if err != nil {
2122
return errors.Wrap(err, "failed to read application metadata")
@@ -26,7 +27,7 @@ func Inspect(out io.Writer, appname string) error {
2627
return err
2728
}
2829
// extract settings
29-
settingsFile := filepath.Join(appname, "settings.yml")
30+
settingsFile := filepath.Join(appname, internal.SettingsFileName)
3031
settingsContent, err := ioutil.ReadFile(settingsFile)
3132
if err != nil {
3233
return errors.Wrap(err, "failed to read application settings")

0 commit comments

Comments
 (0)