Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
helm3
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
helm3
Commits
45933826
Commit
45933826
authored
May 02, 2016
by
Michelle Noorali
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(helm): add helm update command
This resolves issue #640.
parent
eba4c59a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
84 additions
and
0 deletions
+84
-0
update.go
cmd/helm/update.go
+84
-0
No files found.
cmd/helm/update.go
0 → 100644
View file @
45933826
package
main
import
(
"fmt"
"io"
"net/http"
"os"
"strings"
"sync"
"github.com/spf13/cobra"
"github.com/kubernetes/helm/pkg/repo"
)
var
verboseUpdate
bool
var
updateCommand
=
&
cobra
.
Command
{
Use
:
"update"
,
Short
:
"Update information on available charts in the chart repositories."
,
RunE
:
update
,
}
func
init
()
{
updateCommand
.
Flags
()
.
BoolVar
(
&
verboseUpdate
,
"verbose"
,
false
,
"verbose error messages"
)
RootCommand
.
AddCommand
(
updateCommand
)
}
func
update
(
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
f
,
err
:=
repo
.
LoadRepositoriesFile
(
repositoriesFile
())
if
err
!=
nil
{
return
err
}
updateCharts
(
f
.
Repositories
,
verboseUpdate
)
return
nil
}
func
updateCharts
(
repos
map
[
string
]
string
,
verbose
bool
)
{
fmt
.
Println
(
"Hang tight while we grab the latest from your chart repositories..."
)
var
wg
sync
.
WaitGroup
for
name
,
url
:=
range
repos
{
wg
.
Add
(
1
)
go
func
(
n
,
u
string
)
{
defer
wg
.
Done
()
err
:=
downloadCacheFile
(
n
,
u
)
if
err
!=
nil
{
updateErr
:=
"...Unable to get an update from the "
+
n
+
" chart repository"
if
verbose
{
updateErr
=
updateErr
+
": "
+
err
.
Error
()
}
fmt
.
Println
(
updateErr
)
}
else
{
fmt
.
Println
(
"...Successfully got an update from the "
+
n
+
" chart repository"
)
}
}(
name
,
url
)
}
wg
.
Wait
()
fmt
.
Println
(
"Update Complete. Happy Helming!"
)
}
func
downloadCacheFile
(
name
,
url
string
)
error
{
var
cacheURL
string
cacheURL
=
strings
.
TrimSuffix
(
url
,
"/"
)
+
"/cache.yaml"
resp
,
err
:=
http
.
Get
(
cacheURL
)
if
err
!=
nil
{
return
err
}
var
cacheFile
*
os
.
File
defer
resp
.
Body
.
Close
()
cacheFile
,
err
=
os
.
Create
(
cacheDirectory
(
name
+
"-cache.yaml"
))
if
err
!=
nil
{
return
err
}
if
_
,
err
:=
io
.
Copy
(
cacheFile
,
resp
.
Body
);
err
!=
nil
{
return
err
}
return
nil
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment