Commit e8f5d4de authored by Taylor Thomas's avatar Taylor Thomas Committed by GitHub

Merge pull request #2153 from kragniz/package-destination

fix(helm): add --destination flag to 'helm package'
parents 5a86aaf9 a2ab1aaa
...@@ -48,14 +48,16 @@ Versioned chart archives are used by Helm package repositories. ...@@ -48,14 +48,16 @@ Versioned chart archives are used by Helm package repositories.
` `
type packageCmd struct { type packageCmd struct {
save bool save bool
sign bool sign bool
path string path string
key string key string
keyring string keyring string
version string version string
out io.Writer destination string
home helmpath.Home
out io.Writer
home helmpath.Home
} }
func newPackageCmd(out io.Writer) *cobra.Command { func newPackageCmd(out io.Writer) *cobra.Command {
...@@ -96,6 +98,7 @@ func newPackageCmd(out io.Writer) *cobra.Command { ...@@ -96,6 +98,7 @@ func newPackageCmd(out io.Writer) *cobra.Command {
f.StringVar(&pkg.key, "key", "", "name of the key to use when signing. Used if --sign is true") f.StringVar(&pkg.key, "key", "", "name of the key to use when signing. Used if --sign is true")
f.StringVar(&pkg.keyring, "keyring", defaultKeyring(), "location of a public keyring") f.StringVar(&pkg.keyring, "keyring", defaultKeyring(), "location of a public keyring")
f.StringVar(&pkg.version, "version", "", "set the version on the chart to this semver version") f.StringVar(&pkg.version, "version", "", "set the version on the chart to this semver version")
f.StringVarP(&pkg.destination, "destination", "d", ".", "location to write the chart.")
return cmd return cmd
} }
...@@ -129,12 +132,19 @@ func (p *packageCmd) run(cmd *cobra.Command, args []string) error { ...@@ -129,12 +132,19 @@ func (p *packageCmd) run(cmd *cobra.Command, args []string) error {
checkDependencies(ch, reqs, p.out) checkDependencies(ch, reqs, p.out)
} }
// Save to the current working directory. var dest string
cwd, err := os.Getwd() if p.destination == "." {
if err != nil { // Save to the current working directory.
return err dest, err = os.Getwd()
if err != nil {
return err
}
} else {
// Otherwise save to set destination
dest = p.destination
} }
name, err := chartutil.Save(ch, cwd)
name, err := chartutil.Save(ch, dest)
if err == nil && flagDebug { if err == nil && flagDebug {
fmt.Fprintf(p.out, "Saved %s to current directory\n", name) fmt.Fprintf(p.out, "Saved %s to current directory\n", name)
} }
......
...@@ -94,6 +94,20 @@ func TestPackage(t *testing.T) { ...@@ -94,6 +94,20 @@ func TestPackage(t *testing.T) {
expect: "", expect: "",
hasfile: "alpine-0.1.0.tgz", hasfile: "alpine-0.1.0.tgz",
}, },
{
name: "package --destination toot",
args: []string{"testdata/testcharts/alpine"},
flags: map[string]string{"destination": "toot"},
expect: "",
hasfile: "toot/alpine-0.1.0.tgz",
},
{
name: "package --destination does-not-exist",
args: []string{"testdata/testcharts/alpine"},
flags: map[string]string{"destination": "does-not-exist"},
expect: "stat does-not-exist: no such file or directory",
err: true,
},
{ {
name: "package --sign --key=KEY --keyring=KEYRING testdata/testcharts/alpine", name: "package --sign --key=KEY --keyring=KEYRING testdata/testcharts/alpine",
args: []string{"testdata/testcharts/alpine"}, args: []string{"testdata/testcharts/alpine"},
...@@ -124,6 +138,10 @@ func TestPackage(t *testing.T) { ...@@ -124,6 +138,10 @@ func TestPackage(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
if err := os.Mkdir("toot", 0777); err != nil {
t.Fatal(err)
}
ensureTestHome(helmpath.Home(tmp), t) ensureTestHome(helmpath.Home(tmp), t)
oldhome := homePath() oldhome := homePath()
helmHome = tmp helmHome = tmp
......
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