fix(helm): add 'skip-refresh' flag to 'helm init'

This exposes the skip-refresh flag to helm init to make it possible to
initialize Helm without fetching the index.yaml of the stable repo.
This mirrors the behavior of 'helm dep up's skip-refresh flag.

Closes #2127
parent c1540795
...@@ -62,16 +62,17 @@ const ( ...@@ -62,16 +62,17 @@ const (
) )
type initCmd struct { type initCmd struct {
image string image string
clientOnly bool clientOnly bool
canary bool canary bool
upgrade bool upgrade bool
namespace string namespace string
dryRun bool dryRun bool
out io.Writer skipRefresh bool
home helmpath.Home out io.Writer
opts installer.Options home helmpath.Home
kubeClient internalclientset.Interface opts installer.Options
kubeClient internalclientset.Interface
} }
func newInitCmd(out io.Writer) *cobra.Command { func newInitCmd(out io.Writer) *cobra.Command {
...@@ -99,6 +100,7 @@ func newInitCmd(out io.Writer) *cobra.Command { ...@@ -99,6 +100,7 @@ func newInitCmd(out io.Writer) *cobra.Command {
f.BoolVar(&i.upgrade, "upgrade", false, "upgrade if tiller is already installed") f.BoolVar(&i.upgrade, "upgrade", false, "upgrade if tiller is already installed")
f.BoolVarP(&i.clientOnly, "client-only", "c", false, "if set does not install tiller") f.BoolVarP(&i.clientOnly, "client-only", "c", false, "if set does not install tiller")
f.BoolVar(&i.dryRun, "dry-run", false, "do not install local or remote") f.BoolVar(&i.dryRun, "dry-run", false, "do not install local or remote")
f.BoolVar(&i.skipRefresh, "skip-refresh", false, "do not refresh (download) the local repository cache")
// f.BoolVar(&tlsEnable, "tiller-tls", false, "install tiller with TLS enabled") // f.BoolVar(&tlsEnable, "tiller-tls", false, "install tiller with TLS enabled")
// f.BoolVar(&tlsVerify, "tiller-tls-verify", false, "install tiller with TLS enabled and to verify remote certificates") // f.BoolVar(&tlsVerify, "tiller-tls-verify", false, "install tiller with TLS enabled and to verify remote certificates")
...@@ -176,7 +178,7 @@ func (i *initCmd) run() error { ...@@ -176,7 +178,7 @@ func (i *initCmd) run() error {
if err := ensureDirectories(i.home, i.out); err != nil { if err := ensureDirectories(i.home, i.out); err != nil {
return err return err
} }
if err := ensureDefaultRepos(i.home, i.out); err != nil { if err := ensureDefaultRepos(i.home, i.out, i.skipRefresh); err != nil {
return err return err
} }
if err := ensureRepoFileFormat(i.home.RepositoryFile(), i.out); err != nil { if err := ensureRepoFileFormat(i.home.RepositoryFile(), i.out); err != nil {
...@@ -242,12 +244,12 @@ func ensureDirectories(home helmpath.Home, out io.Writer) error { ...@@ -242,12 +244,12 @@ func ensureDirectories(home helmpath.Home, out io.Writer) error {
return nil return nil
} }
func ensureDefaultRepos(home helmpath.Home, out io.Writer) error { func ensureDefaultRepos(home helmpath.Home, out io.Writer, skipRefresh bool) error {
repoFile := home.RepositoryFile() repoFile := home.RepositoryFile()
if fi, err := os.Stat(repoFile); err != nil { if fi, err := os.Stat(repoFile); err != nil {
fmt.Fprintf(out, "Creating %s \n", repoFile) fmt.Fprintf(out, "Creating %s \n", repoFile)
f := repo.NewRepoFile() f := repo.NewRepoFile()
sr, err := initStableRepo(home.CacheIndex(stableRepository)) sr, err := initStableRepo(home.CacheIndex(stableRepository), skipRefresh)
if err != nil { if err != nil {
return err return err
} }
...@@ -266,7 +268,7 @@ func ensureDefaultRepos(home helmpath.Home, out io.Writer) error { ...@@ -266,7 +268,7 @@ func ensureDefaultRepos(home helmpath.Home, out io.Writer) error {
return nil return nil
} }
func initStableRepo(cacheFile string) (*repo.Entry, error) { func initStableRepo(cacheFile string, skipRefresh bool) (*repo.Entry, error) {
c := repo.Entry{ c := repo.Entry{
Name: stableRepository, Name: stableRepository,
URL: stableRepositoryURL, URL: stableRepositoryURL,
...@@ -277,6 +279,10 @@ func initStableRepo(cacheFile string) (*repo.Entry, error) { ...@@ -277,6 +279,10 @@ func initStableRepo(cacheFile string) (*repo.Entry, error) {
return nil, err return nil, err
} }
if skipRefresh {
return &c, nil
}
// In this case, the cacheFile is always absolute. So passing empty string // In this case, the cacheFile is always absolute. So passing empty string
// is safe. // is safe.
if err := r.DownloadIndexFile(""); err != nil { if err := r.DownloadIndexFile(""); err != nil {
......
...@@ -179,7 +179,10 @@ func TestEnsureHome(t *testing.T) { ...@@ -179,7 +179,10 @@ func TestEnsureHome(t *testing.T) {
if err := ensureDirectories(hh, b); err != nil { if err := ensureDirectories(hh, b); err != nil {
t.Error(err) t.Error(err)
} }
if err := ensureDefaultRepos(hh, b); err != nil { if err := ensureDefaultRepos(hh, b, false); err != nil {
t.Error(err)
}
if err := ensureDefaultRepos(hh, b, true); err != nil {
t.Error(err) t.Error(err)
} }
if err := ensureRepoFileFormat(hh.RepositoryFile(), b); err != nil { if err := ensureRepoFileFormat(hh.RepositoryFile(), b); err != nil {
......
...@@ -161,7 +161,6 @@ func (r *ChartRepository) DownloadIndexFile(cachePath string) error { ...@@ -161,7 +161,6 @@ func (r *ChartRepository) DownloadIndexFile(cachePath string) error {
if !filepath.IsAbs(cp) { if !filepath.IsAbs(cp) {
cp = filepath.Join(cachePath, cp) cp = filepath.Join(cachePath, cp)
} }
println("Writing to", cp)
return ioutil.WriteFile(cp, index, 0644) return ioutil.WriteFile(cp, index, 0644)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment