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
...@@ -54,6 +54,8 @@ type packageCmd struct { ...@@ -54,6 +54,8 @@ type packageCmd struct {
key string key string
keyring string keyring string
version string version string
destination string
out io.Writer out io.Writer
home helmpath.Home home helmpath.Home
} }
...@@ -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)
} }
var dest string
if p.destination == "." {
// Save to the current working directory. // Save to the current working directory.
cwd, err := os.Getwd() dest, err = os.Getwd()
if err != nil { if err != nil {
return err return err
} }
name, err := chartutil.Save(ch, cwd) } else {
// Otherwise save to set destination
dest = p.destination
}
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