@@ -93,6 +93,13 @@ func (c Charts) Vendor() error {
93
93
94
94
log .Println ("Pulling Charts ..." )
95
95
for _ , r := range c .Manifest .Requires {
96
+ chartName := parseReqName (r .Chart )
97
+ chartPath := filepath .Join (dir , chartName )
98
+ if _ , err := os .Stat (chartPath ); err == nil {
99
+ log .Printf (" %s@%s exists" , r .Chart , r .Version .String ())
100
+ continue
101
+ }
102
+
96
103
err := c .Helm .Pull (r .Chart , r .Version .String (), PullOpts {
97
104
Destination : dir ,
98
105
Opts : Opts {Repositories : c .Manifest .Repositories },
@@ -101,7 +108,7 @@ func (c Charts) Vendor() error {
101
108
return err
102
109
}
103
110
104
- log .Printf (" %s@%s" , r .Chart , r .Version .String ())
111
+ log .Printf (" %s@%s downloaded " , r .Chart , r .Version .String ())
105
112
}
106
113
107
114
return nil
@@ -199,3 +206,14 @@ func parseReq(s string) (*Requirement, error) {
199
206
Version : * ver ,
200
207
}, nil
201
208
}
209
+
210
+ // parseReqName parses a name from a string of the format `repo/name` or `name`
211
+ func parseReqName (s string ) string {
212
+ if ! strings .Contains (s , "/" ) {
213
+ return s
214
+ }
215
+
216
+ elems := strings .Split (s , "/" )
217
+ name := elems [1 ]
218
+ return name
219
+ }
0 commit comments