|
|
@ -40,9 +40,10 @@ future releases.
|
|
|
|
var errNoRepositories = errors.New("no repositories found. You must add one before updating")
|
|
|
|
var errNoRepositories = errors.New("no repositories found. You must add one before updating")
|
|
|
|
|
|
|
|
|
|
|
|
type repoUpdateCmd struct {
|
|
|
|
type repoUpdateCmd struct {
|
|
|
|
update func([]*repo.ChartRepository, io.Writer, helmpath.Home)
|
|
|
|
update func([]*repo.ChartRepository, io.Writer, helmpath.Home, bool) error
|
|
|
|
home helmpath.Home
|
|
|
|
home helmpath.Home
|
|
|
|
out io.Writer
|
|
|
|
out io.Writer
|
|
|
|
|
|
|
|
strict bool
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func newRepoUpdateCmd(out io.Writer) *cobra.Command {
|
|
|
|
func newRepoUpdateCmd(out io.Writer) *cobra.Command {
|
|
|
@ -60,6 +61,10 @@ func newRepoUpdateCmd(out io.Writer) *cobra.Command {
|
|
|
|
return u.run()
|
|
|
|
return u.run()
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f := cmd.Flags()
|
|
|
|
|
|
|
|
f.BoolVar(&u.strict, "strict", false, "fail on update warnings")
|
|
|
|
|
|
|
|
|
|
|
|
return cmd
|
|
|
|
return cmd
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -80,14 +85,15 @@ func (u *repoUpdateCmd) run() error {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
repos = append(repos, r)
|
|
|
|
repos = append(repos, r)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return u.update(repos, u.out, u.home, u.strict)
|
|
|
|
u.update(repos, u.out, u.home)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func updateCharts(repos []*repo.ChartRepository, out io.Writer, home helmpath.Home) {
|
|
|
|
func updateCharts(repos []*repo.ChartRepository, out io.Writer, home helmpath.Home, strict bool) error {
|
|
|
|
fmt.Fprintln(out, "Hang tight while we grab the latest from your chart repositories...")
|
|
|
|
fmt.Fprintln(out, "Hang tight while we grab the latest from your chart repositories...")
|
|
|
|
var wg sync.WaitGroup
|
|
|
|
var (
|
|
|
|
|
|
|
|
errorCounter int
|
|
|
|
|
|
|
|
wg sync.WaitGroup
|
|
|
|
|
|
|
|
)
|
|
|
|
for _, re := range repos {
|
|
|
|
for _, re := range repos {
|
|
|
|
wg.Add(1)
|
|
|
|
wg.Add(1)
|
|
|
|
go func(re *repo.ChartRepository) {
|
|
|
|
go func(re *repo.ChartRepository) {
|
|
|
@ -98,6 +104,7 @@ func updateCharts(repos []*repo.ChartRepository, out io.Writer, home helmpath.Ho
|
|
|
|
}
|
|
|
|
}
|
|
|
|
err := re.DownloadIndexFile(home.Cache())
|
|
|
|
err := re.DownloadIndexFile(home.Cache())
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
errorCounter++
|
|
|
|
fmt.Fprintf(out, "...Unable to get an update from the %q chart repository (%s):\n\t%s\n", re.Config.Name, re.Config.URL, err)
|
|
|
|
fmt.Fprintf(out, "...Unable to get an update from the %q chart repository (%s):\n\t%s\n", re.Config.Name, re.Config.URL, err)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
fmt.Fprintf(out, "...Successfully got an update from the %q chart repository\n", re.Config.Name)
|
|
|
|
fmt.Fprintf(out, "...Successfully got an update from the %q chart repository\n", re.Config.Name)
|
|
|
@ -105,5 +112,11 @@ func updateCharts(repos []*repo.ChartRepository, out io.Writer, home helmpath.Ho
|
|
|
|
}(re)
|
|
|
|
}(re)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
wg.Wait()
|
|
|
|
wg.Wait()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if errorCounter != 0 && strict {
|
|
|
|
|
|
|
|
return errors.New("Update Failed. Check log for details")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fmt.Fprintln(out, "Update Complete. ⎈ Happy Helming!⎈ ")
|
|
|
|
fmt.Fprintln(out, "Update Complete. ⎈ Happy Helming!⎈ ")
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|