Skip to content

Commit e6408ba

Browse files
authored
Merge pull request #1 from 7AC/master
manifest: add File: attribute
2 parents 9948591 + 3f4644c commit e6408ba

File tree

2 files changed

+42
-17
lines changed

2 files changed

+42
-17
lines changed

manifest/example_test.go

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package manifest_test
22

33
import (
44
"bufio"
5-
"fmt"
65
"strings"
6+
"testing"
77

88
"github.com/docker-library/go-dockerlibrary/manifest"
99
)
1010

11-
func Example() {
11+
func TestExample(t *testing.T) {
1212
man, err := manifest.Parse(bufio.NewReader(strings.NewReader(`# RFC 2822
1313
1414
# I LOVE CAKE
@@ -60,20 +60,30 @@ Tags: raspbian-s390x
6060
Architectures: s390x, i386
6161
6262
63+
Tags: 1.5-withfile
64+
SharedTags: 1.5-debian
65+
GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19
66+
File: Dockerfile-15
67+
68+
Tags: 1.5-withdirandfile
69+
SharedTags: 1.5-debian
70+
GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19
71+
Directory: 1.5
72+
File: Dockerfile-debian
6373
`)))
6474
if err != nil {
65-
panic(err)
75+
t.Fatal(err)
6676
}
67-
fmt.Printf("-------------\n2822:\n%s\n", man)
77+
t.Logf("-------------\n2822:\n%s\n", man)
6878

69-
fmt.Printf("\nShared Tag Groups:\n")
79+
t.Logf("\nShared Tag Groups:\n")
7080
for _, group := range man.GetSharedTagGroups() {
71-
fmt.Printf("\n - %s\n", strings.Join(group.SharedTags, ", "))
81+
t.Logf("\n - %s\n", strings.Join(group.SharedTags, ", "))
7282
for _, entry := range group.Entries {
73-
fmt.Printf(" - %s\n", entry.TagsString())
83+
t.Logf(" - %s\n", entry.TagsString())
7484
}
7585
}
76-
fmt.Printf("\n")
86+
t.Logf("\n")
7787

7888
man, err = manifest.Parse(bufio.NewReader(strings.NewReader(`
7989
# maintainer: InfoSiftr <[email protected]> (@infosiftr)
@@ -90,7 +100,7 @@ i: g@h j
90100
if err != nil {
91101
panic(err)
92102
}
93-
fmt.Printf("-------------\nline-based:\n%v\n", man)
103+
t.Logf("-------------\nline-based:\n%v\n", man)
94104

95105
// Output:
96106
// -------------
@@ -151,15 +161,15 @@ i: g@h j
151161
// Directory: j
152162
}
153163

154-
func ExampleFetch_local() {
164+
func TestExampleFetch_local(t *testing.T) {
155165
repoName, tagName, man, err := manifest.Fetch("testdata", "bash:4.4")
156166
if err != nil {
157167
panic(err)
158168
}
159169

160-
fmt.Printf("%s:%s\n\n", repoName, tagName)
170+
t.Logf("%s:%s\n\n", repoName, tagName)
161171

162-
fmt.Println(man.GetTag(tagName).ClearDefaults(manifest.DefaultManifestEntry).String())
172+
t.Log(man.GetTag(tagName).ClearDefaults(manifest.DefaultManifestEntry).String())
163173

164174
// Output:
165175
// bash:4.4
@@ -171,15 +181,15 @@ func ExampleFetch_local() {
171181
// Directory: 4.4
172182
}
173183

174-
func ExampleFetch_remote() {
184+
func TestExampleFetch_remote(t *testing.T) {
175185
repoName, tagName, man, err := manifest.Fetch("/home/jsmith/docker/official-images/library", "https://github.com/docker-library/official-images/raw/1a3c4cd6d5cd53bd538a6f56a69f94c5b35325a7/library/bash:4.4")
176186
if err != nil {
177187
panic(err)
178188
}
179189

180-
fmt.Printf("%s:%s\n\n", repoName, tagName)
190+
t.Logf("%s:%s\n\n", repoName, tagName)
181191

182-
fmt.Println(man.GetTag(tagName).ClearDefaults(manifest.DefaultManifestEntry).String())
192+
t.Log(man.GetTag(tagName).ClearDefaults(manifest.DefaultManifestEntry).String())
183193

184194
// Output:
185195
// bash:4.4

manifest/rfc2822.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type Manifest2822Entry struct {
3838
GitFetch string
3939
GitCommit string
4040
Directory string
41+
File string
4142

4243
// architecture-specific versions of the above fields
4344
ArchValues map[string]string
@@ -56,6 +57,7 @@ var (
5657

5758
GitFetch: "refs/heads/master",
5859
Directory: ".",
60+
File: "Dockerfile",
5961
}
6062
)
6163

@@ -81,7 +83,7 @@ func (entry Manifest2822Entry) Clone() Manifest2822Entry {
8183

8284
func (entry *Manifest2822Entry) SeedArchValues() {
8385
for field, val := range entry.Paragraph.Values {
84-
if strings.HasSuffix(field, "-GitRepo") || strings.HasSuffix(field, "-GitFetch") || strings.HasSuffix(field, "-GitCommit") || strings.HasSuffix(field, "-Directory") {
86+
if strings.HasSuffix(field, "-GitRepo") || strings.HasSuffix(field, "-GitFetch") || strings.HasSuffix(field, "-GitCommit") || strings.HasSuffix(field, "-Directory") || strings.HasSuffix(field, "-File") {
8587
entry.ArchValues[field] = val
8688
}
8789
}
@@ -118,7 +120,7 @@ func (a Manifest2822Entry) SameBuildArtifacts(b Manifest2822Entry) bool {
118120
}
119121
}
120122

121-
return a.ArchitecturesString() == b.ArchitecturesString() && a.GitRepo == b.GitRepo && a.GitFetch == b.GitFetch && a.GitCommit == b.GitCommit && a.Directory == b.Directory && a.ConstraintsString() == b.ConstraintsString()
123+
return a.ArchitecturesString() == b.ArchitecturesString() && a.GitRepo == b.GitRepo && a.GitFetch == b.GitFetch && a.GitCommit == b.GitCommit && a.Directory == b.Directory && a.File == b.File && a.ConstraintsString() == b.ConstraintsString()
122124
}
123125

124126
// returns a list of architecture-specific fields in an Entry
@@ -160,6 +162,9 @@ func (entry Manifest2822Entry) ClearDefaults(defaults Manifest2822Entry) Manifes
160162
if entry.Directory == defaults.Directory {
161163
entry.Directory = ""
162164
}
165+
if entry.File == defaults.File {
166+
entry.File = ""
167+
}
163168
for _, key := range defaults.archFields() {
164169
if defaults.ArchValues[key] == entry.ArchValues[key] {
165170
delete(entry.ArchValues, key)
@@ -197,6 +202,9 @@ func (entry Manifest2822Entry) String() string {
197202
if str := entry.Directory; str != "" {
198203
ret = append(ret, "Directory: "+str)
199204
}
205+
if str := entry.File; str != "" {
206+
ret = append(ret, "File: "+str)
207+
}
200208
for _, key := range entry.archFields() {
201209
ret = append(ret, key+": "+entry.ArchValues[key])
202210
}
@@ -263,6 +271,13 @@ func (entry Manifest2822Entry) ArchDirectory(arch string) string {
263271
return entry.Directory
264272
}
265273

274+
func (entry Manifest2822Entry) ArchFile(arch string) string {
275+
if val, ok := entry.ArchValues[arch+"-File"]; ok && val != "" {
276+
return val
277+
}
278+
return entry.File
279+
}
280+
266281
func (entry Manifest2822Entry) HasTag(tag string) bool {
267282
for _, existingTag := range entry.Tags {
268283
if tag == existingTag {

0 commit comments

Comments
 (0)