MCPcopy Index your code
hub / github.com/1Panel-dev/KubePi / AddRepo

Method AddRepo

pkg/util/helm/helm.go:334–394  ·  view source on GitHub ↗
(name string, url string, username string, password string)

Source from the content-addressed store, hash-verified

332}
333
334func (c Client) AddRepo(name string, url string, username string, password string) error {
335 settings := GetSettings(c.ClusterName)
336
337 repoFile := settings.RepositoryConfig
338
339 err := os.MkdirAll(filepath.Dir(repoFile), os.ModePerm)
340 if err != nil && !os.IsExist(err) {
341 return err
342 }
343
344 fileLock := flock.New(strings.Replace(repoFile, filepath.Ext(repoFile), ".lock", 1))
345 lockCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
346 defer cancel()
347 locked, err := fileLock.TryLockContext(lockCtx, time.Second)
348 if err == nil && locked {
349 defer func() {
350 if err := fileLock.Unlock(); err != nil {
351 server.Logger().Errorf("addRepo fileLock.Unlock failed, error: %s", err.Error())
352 }
353 }()
354 }
355 if err != nil {
356 return err
357 }
358
359 b, err := ioutil.ReadFile(repoFile)
360 if err != nil && !os.IsNotExist(err) {
361 return err
362 }
363
364 var f repo.File
365 if err := yaml.Unmarshal(b, &f); err != nil {
366 return err
367 }
368
369 if f.Has(name) {
370 return errors.Errorf("repository name (%s) already exists, please specify a different name", name)
371 }
372
373 e := repo.Entry{
374 Name: name,
375 URL: url,
376 Username: username,
377 Password: password,
378 InsecureSkipTLSverify: true,
379 }
380
381 r, err := repo.NewChartRepository(&e, getter.All(settings))
382 if err != nil {
383 return err
384 }
385 r.CachePath = settings.RepositoryCache
386 if _, err := r.DownloadIndexFile(); err != nil {
387 return errors.Wrapf(err, "looks like %q is not a valid chart repository or cannot be reached", url)
388 }
389 f.Update(&e)
390 if err := f.WriteFile(repoFile, 0644); err != nil {
391 return err

Callers

nothing calls this directly

Calls 5

LoggerFunction · 0.92
GetSettingsFunction · 0.85
ErrorMethod · 0.80
NewMethod · 0.65
UpdateMethod · 0.65

Tested by

no test coverage detected