Commit b9fb8abd authored by Matt Butcher's avatar Matt Butcher

ref(helm): remove old structure functions

This replaces the old structure functions with the functions in
cmd/helm/helmpath.

Closes #1318
parent 31d51a79
......@@ -103,7 +103,7 @@ func TestDependencyBuildCmd(t *testing.T) {
t.Fatal(err)
}
i, err := repo.LoadIndexFile(cacheIndexFile("test"))
i, err := repo.LoadIndexFile(dbc.helmhome.CacheIndex("test"))
if err != nil {
t.Fatal(err)
}
......
......@@ -85,7 +85,7 @@ func TestDependencyUpdateCmd(t *testing.T) {
t.Fatal(err)
}
i, err := repo.LoadIndexFile(cacheIndexFile("test"))
i, err := repo.LoadIndexFile(duc.helmhome.CacheIndex("test"))
if err != nil {
t.Fatal(err)
}
......
......@@ -28,9 +28,10 @@ import (
)
const (
homeEnvVar = "HELM_HOME"
hostEnvVar = "HELM_HOST"
tillerNamespace = "kube-system"
localRepoIndexFilePath = "index.yaml"
homeEnvVar = "HELM_HOME"
hostEnvVar = "HELM_HOST"
tillerNamespace = "kube-system"
)
var (
......@@ -159,15 +160,6 @@ func checkArgsLength(argsReceived int, requiredArgs ...string) error {
return nil
}
// requireInit is a PreRunE implementation for validating that $HELM_HOME is configured.
func requireInit(cmd *cobra.Command, args []string) error {
err := requireHome()
if err != nil {
return fmt.Errorf("%s (try running 'helm init')", err)
}
return nil
}
// prettyError unwraps or rewrites certain errors to make them more user-friendly.
func prettyError(err error) error {
if err == nil {
......@@ -178,3 +170,7 @@ func prettyError(err error) error {
// the desc. Instead, we have to pass ALL errors through this.
return errors.New(grpc.ErrorDesc(err))
}
func homePath() string {
return os.ExpandEnv(helmHome)
}
......@@ -255,6 +255,15 @@ func ensureTestHome(home helmpath.Home, t *testing.T) error {
repoFile := home.RepositoryFile()
if fi, err := os.Stat(repoFile); err != nil {
rf := repo.NewRepoFile()
rf.Add(&repo.Entry{
Name: "charts",
URL: "http://example.com/foo",
Cache: "charts-index.yaml",
}, &repo.Entry{
Name: "local",
URL: "http://localhost.com:7743/foo",
Cache: "local-index.yaml",
})
if err := rf.WriteFile(repoFile, 0644); err != nil {
return err
}
......@@ -276,7 +285,7 @@ func ensureTestHome(home helmpath.Home, t *testing.T) error {
}
//TODO: take this out and replace with helm update functionality
os.Symlink(localRepoIndexFile, cacheDirectory("local-index.yaml"))
os.Symlink(localRepoIndexFile, home.CacheIndex("local"))
} else if fi.IsDir() {
return fmt.Errorf("%s must be a file, not a directory", localRepoIndexFile)
}
......
......@@ -92,18 +92,6 @@ func (i *initCmd) run() error {
return nil
}
func requireHome() error {
dirs := []string{homePath(), repositoryDirectory(), cacheDirectory(), localRepoDirectory()}
for _, d := range dirs {
if fi, err := os.Stat(d); err != nil {
return fmt.Errorf("directory %q is not configured", d)
} else if !fi.IsDir() {
return fmt.Errorf("expected %q to be a directory", d)
}
}
return nil
}
// ensureHome checks to see if $HELM_HOME exists
//
// If $HELM_HOME does not exist, this function will create it.
......@@ -150,7 +138,7 @@ func ensureHome(home helmpath.Home, out io.Writer) error {
}
}
localRepoIndexFile := localRepoDirectory(localRepoIndexFilePath)
localRepoIndexFile := home.LocalRepository(localRepoIndexFilePath)
if fi, err := os.Stat(localRepoIndexFile); err != nil {
fmt.Fprintf(out, "Creating %s \n", localRepoIndexFile)
i := repo.NewIndexFile()
......@@ -159,7 +147,7 @@ func ensureHome(home helmpath.Home, out io.Writer) error {
}
//TODO: take this out and replace with helm update functionality
os.Symlink(localRepoIndexFile, cacheDirectory("local-index.yaml"))
os.Symlink(localRepoIndexFile, home.CacheIndex("local"))
} else if fi.IsDir() {
return fmt.Errorf("%s must be a file, not a directory", localRepoIndexFile)
}
......
......@@ -54,7 +54,7 @@ func TestEnsureHome(t *testing.T) {
t.Errorf("%s should not be a directory", fi)
}
if fi, err := os.Stat(localRepoDirectory(localRepoIndexFilePath)); err != nil {
if fi, err := os.Stat(hh.LocalRepository(localRepoIndexFilePath)); err != nil {
t.Errorf("%s", err)
} else if fi.IsDir() {
t.Errorf("%s should not be a directory", fi)
......
......@@ -323,7 +323,7 @@ func locateChartPath(name, version string, verify bool, keyring string) (string,
return name, fmt.Errorf("path %q not found", name)
}
crepo := filepath.Join(repositoryDirectory(), name)
crepo := filepath.Join(helmpath.Home(homePath()).Repository(), name)
if _, err := os.Stat(crepo); err == nil {
return filepath.Abs(crepo)
}
......
......@@ -37,17 +37,15 @@ future releases.
`
type repoUpdateCmd struct {
repoFile string
update func([]*repo.Entry, bool, io.Writer, helmpath.Home)
out io.Writer
home helmpath.Home
update func([]*repo.Entry, bool, io.Writer, helmpath.Home)
out io.Writer
home helmpath.Home
}
func newRepoUpdateCmd(out io.Writer) *cobra.Command {
u := &repoUpdateCmd{
out: out,
update: updateCharts,
repoFile: repositoriesFile(),
out: out,
update: updateCharts,
}
cmd := &cobra.Command{
Use: "update",
......@@ -63,7 +61,7 @@ func newRepoUpdateCmd(out io.Writer) *cobra.Command {
}
func (u *repoUpdateCmd) run() error {
f, err := repo.LoadRepositoriesFile(u.repoFile)
f, err := repo.LoadRepositoriesFile(u.home.RepositoryFile())
if err != nil {
return err
}
......
......@@ -29,7 +29,6 @@ import (
)
func TestUpdateCmd(t *testing.T) {
thome, err := tempHelmHome(t)
if err != nil {
t.Fatal(err)
......@@ -50,14 +49,16 @@ func TestUpdateCmd(t *testing.T) {
}
}
uc := &repoUpdateCmd{
out: out,
update: updater,
repoFile: "testdata/repositories.yaml",
out: out,
update: updater,
home: helmpath.Home(thome),
}
if err := uc.run(); err != nil {
t.Fatal(err)
}
uc.run()
if got := out.String(); !strings.Contains(got, "charts") || !strings.Contains(got, "local") {
t.Errorf("Expected 'charts' and 'local' (in any order) got %s", got)
t.Errorf("Expected 'charts' and 'local' (in any order) got %q", got)
}
}
......
......@@ -57,7 +57,6 @@ func newSearchCmd(out io.Writer) *cobra.Command {
RunE: func(cmd *cobra.Command, args []string) error {
return sc.run(args)
},
PreRunE: requireInit,
}
f := cmd.Flags()
......
/*
Copyright 2016 The Kubernetes Authors All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package main
import (
"os"
"path/filepath"
)
const (
repositoryDir string = "repository"
repositoriesFilePath string = "repositories.yaml"
cachePath string = "cache"
localRepoPath string = "local"
localRepoIndexFilePath string = "index.yaml"
)
func homePath() string {
return os.ExpandEnv(helmHome)
}
// All other directories go under the $HELM_HOME/repository.
func repositoryDirectory() string {
return homePath() + "/" + repositoryDir
}
func cacheDirectory(paths ...string) string {
fragments := append([]string{repositoryDirectory(), cachePath}, paths...)
return filepath.Join(fragments...)
}
func cacheIndexFile(repoName string) string {
return cacheDirectory(repoName + "-index.yaml")
}
func localRepoDirectory(paths ...string) string {
fragments := append([]string{repositoryDirectory(), localRepoPath}, paths...)
return filepath.Join(fragments...)
}
func repositoriesFile() string {
return filepath.Join(repositoryDirectory(), repositoriesFilePath)
}
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