Skip to content

Commit eb4249e

Browse files
committed
bump compose-go to v2.0.0-rc.2
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent 1e8241f commit eb4249e

File tree

4 files changed

+71
-51
lines changed

4 files changed

+71
-51
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/AlecAivazis/survey/v2 v2.3.7
77
github.com/Microsoft/go-winio v0.6.1
88
github.com/buger/goterm v1.0.4
9-
github.com/compose-spec/compose-go/v2 v2.0.0-rc.1
9+
github.com/compose-spec/compose-go/v2 v2.0.0-rc.2
1010
github.com/containerd/console v1.0.3
1111
github.com/containerd/containerd v1.7.12
1212
github.com/davecgh/go-spew v1.1.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+g
8686
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
8787
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
8888
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
89-
github.com/compose-spec/compose-go/v2 v2.0.0-rc.1 h1:0nnSpdYg29uaQOU/YJ1YSgYgwkQr/XNZ0QAFtEPTtIA=
90-
github.com/compose-spec/compose-go/v2 v2.0.0-rc.1/go.mod h1:IVsvFyGVhw4FASzUtlWNVaAOhYmakXAFY9IlZ7LAuD8=
89+
github.com/compose-spec/compose-go/v2 v2.0.0-rc.2 h1:eJ01FpliL/02KvsaPyH1bSLbM1S70yWQUojHVRbyvy4=
90+
github.com/compose-spec/compose-go/v2 v2.0.0-rc.2/go.mod h1:IVsvFyGVhw4FASzUtlWNVaAOhYmakXAFY9IlZ7LAuD8=
9191
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
9292
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
9393
github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=

pkg/remote/git.go

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,13 @@ func gitRemoteLoaderEnabled() (bool, error) {
4848
func NewGitRemoteLoader(offline bool) loader.ResourceLoader {
4949
return gitRemoteLoader{
5050
offline: offline,
51+
known: map[string]string{},
5152
}
5253
}
5354

5455
type gitRemoteLoader struct {
5556
offline bool
57+
known map[string]string
5658
}
5759

5860
func (g gitRemoteLoader) Accept(path string) bool {
@@ -76,31 +78,34 @@ func (g gitRemoteLoader) Load(ctx context.Context, path string) (string, error)
7678
return "", err
7779
}
7880

79-
if ref.Commit == "" {
80-
ref.Commit = "HEAD" // default branch
81-
}
82-
83-
err = g.resolveGitRef(ctx, path, ref)
84-
if err != nil {
85-
return "", err
86-
}
87-
88-
cache, err := cacheDir()
89-
if err != nil {
90-
return "", fmt.Errorf("initializing remote resource cache: %w", err)
91-
}
92-
93-
local := filepath.Join(cache, ref.Commit)
94-
if _, err := os.Stat(local); os.IsNotExist(err) {
95-
if g.offline {
96-
return "", nil
81+
local, ok := g.known[path]
82+
if !ok {
83+
if ref.Commit == "" {
84+
ref.Commit = "HEAD" // default branch
9785
}
98-
err = g.checkout(ctx, local, ref)
86+
87+
err = g.resolveGitRef(ctx, path, ref)
9988
if err != nil {
10089
return "", err
10190
}
102-
}
10391

92+
cache, err := cacheDir()
93+
if err != nil {
94+
return "", fmt.Errorf("initializing remote resource cache: %w", err)
95+
}
96+
97+
local = filepath.Join(cache, ref.Commit)
98+
if _, err := os.Stat(local); os.IsNotExist(err) {
99+
if g.offline {
100+
return "", nil
101+
}
102+
err = g.checkout(ctx, local, ref)
103+
if err != nil {
104+
return "", err
105+
}
106+
}
107+
g.known[path] = local
108+
}
104109
if ref.SubDir != "" {
105110
local = filepath.Join(local, ref.SubDir)
106111
}
@@ -114,6 +119,10 @@ func (g gitRemoteLoader) Load(ctx context.Context, path string) (string, error)
114119
return local, err
115120
}
116121

122+
func (g gitRemoteLoader) Dir(path string) string {
123+
return g.known[path]
124+
}
125+
117126
func (g gitRemoteLoader) resolveGitRef(ctx context.Context, path string, ref *gitutil.GitRef) error {
118127
if !commitSHA.MatchString(ref.Commit) {
119128
cmd := exec.CommandContext(ctx, "git", "ls-remote", "--exit-code", ref.Remote, ref.Commit)

pkg/remote/oci.go

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ func NewOCIRemoteLoader(dockerCli command.Cli, offline bool) loader.ResourceLoad
5050
return ociRemoteLoader{
5151
dockerCli: dockerCli,
5252
offline: offline,
53+
known: map[string]string{},
5354
}
5455
}
5556

5657
type ociRemoteLoader struct {
5758
dockerCli command.Cli
5859
offline bool
60+
known map[string]string
5961
}
6062

6163
const prefix = "oci://"
@@ -77,42 +79,51 @@ func (g ociRemoteLoader) Load(ctx context.Context, path string) (string, error)
7779
return "", nil
7880
}
7981

80-
ref, err := reference.ParseDockerRef(path[len(prefix):])
81-
if err != nil {
82-
return "", err
83-
}
84-
85-
opt, err := storeutil.GetImageConfig(g.dockerCli, nil)
86-
if err != nil {
87-
return "", err
88-
}
89-
resolver := imagetools.New(opt)
90-
91-
content, descriptor, err := resolver.Get(ctx, ref.String())
92-
if err != nil {
93-
return "", err
94-
}
82+
local, ok := g.known[path]
83+
if !ok {
84+
ref, err := reference.ParseDockerRef(path[len(prefix):])
85+
if err != nil {
86+
return "", err
87+
}
9588

96-
cache, err := cacheDir()
97-
if err != nil {
98-
return "", fmt.Errorf("initializing remote resource cache: %w", err)
99-
}
89+
opt, err := storeutil.GetImageConfig(g.dockerCli, nil)
90+
if err != nil {
91+
return "", err
92+
}
93+
resolver := imagetools.New(opt)
10094

101-
local := filepath.Join(cache, descriptor.Digest.Hex())
102-
composeFile := filepath.Join(local, "compose.yaml")
103-
if _, err = os.Stat(local); os.IsNotExist(err) {
104-
var manifest v1.Manifest
105-
err = json.Unmarshal(content, &manifest)
95+
content, descriptor, err := resolver.Get(ctx, ref.String())
10696
if err != nil {
10797
return "", err
10898
}
10999

110-
err2 := g.pullComposeFiles(ctx, local, composeFile, manifest, ref, resolver)
111-
if err2 != nil {
112-
return "", err2
100+
cache, err := cacheDir()
101+
if err != nil {
102+
return "", fmt.Errorf("initializing remote resource cache: %w", err)
103+
}
104+
105+
local = filepath.Join(cache, descriptor.Digest.Hex())
106+
composeFile := filepath.Join(local, "compose.yaml")
107+
if _, err = os.Stat(local); os.IsNotExist(err) {
108+
var manifest v1.Manifest
109+
err = json.Unmarshal(content, &manifest)
110+
if err != nil {
111+
return "", err
112+
}
113+
114+
err2 := g.pullComposeFiles(ctx, local, composeFile, manifest, ref, resolver)
115+
if err2 != nil {
116+
return "", err2
117+
}
113118
}
119+
g.known[path] = local
114120
}
115-
return composeFile, nil
121+
122+
return filepath.Join(local, "compose.yaml"), nil
123+
}
124+
125+
func (g ociRemoteLoader) Dir(path string) string {
126+
return g.known[path]
116127
}
117128

118129
func (g ociRemoteLoader) pullComposeFiles(ctx context.Context, local string, composeFile string, manifest v1.Manifest, ref reference.Named, resolver *imagetools.Resolver) error {

0 commit comments

Comments
 (0)