github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/cli/util/helm/downloader.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package helm 21 22 import ( 23 "io" 24 "strings" 25 26 "helm.sh/helm/v3/pkg/cli" 27 "helm.sh/helm/v3/pkg/downloader" 28 "helm.sh/helm/v3/pkg/getter" 29 "helm.sh/helm/v3/pkg/registry" 30 ) 31 32 func NewDownloader(cfg *Config) (*downloader.ChartDownloader, error) { 33 var err error 34 var out strings.Builder 35 36 settings := cli.New() 37 settings.SetNamespace(cfg.namespace) 38 settings.KubeConfig = cfg.kubeConfig 39 if cfg.kubeContext != "" { 40 settings.KubeContext = cfg.kubeContext 41 } 42 settings.Debug = cfg.debug 43 client, err := registry.NewClient( 44 registry.ClientOptDebug(settings.Debug), 45 registry.ClientOptEnableCache(true), 46 registry.ClientOptWriter(io.Discard), 47 registry.ClientOptCredentialsFile(settings.RegistryConfig), 48 ) 49 if err != nil { 50 return nil, err 51 } 52 chartsDownloaders := &downloader.ChartDownloader{ 53 Out: &out, 54 Verify: downloader.VerifyNever, 55 Getters: getter.All(settings), 56 Options: []getter.Option{}, 57 RegistryClient: client, 58 } 59 return chartsDownloaders, nil 60 }