helm(search): add search command

pull/613/head
Michelle Noorali 9 years ago
parent 7842d2457b
commit 2e1701be11

@ -0,0 +1,61 @@
package main
import (
"errors"
"fmt"
"os"
"path/filepath"
"strings"
"github.com/deis/tiller/pkg/repo"
"github.com/spf13/cobra"
)
func init() {
RootCommand.AddCommand(searchCmd)
}
var searchCmd = &cobra.Command{
Use: "search [CHART]",
Short: "Search for charts",
Long: "",
RunE: Search,
}
func Search(cmd *cobra.Command, args []string) error {
if len(args) == 0 {
return errors.New("This command needs at least one argument")
}
results, err := searchCacheForPattern(args[0])
if err != nil {
return err
}
cmd.Println("Charts:")
for _, result := range results {
fmt.Println(result)
}
return nil
}
func searchCacheForPattern(name string) ([]string, error) {
dir := CacheDirectory(os.ExpandEnv(helmHome))
fileList := []string{}
filepath.Walk(dir, func(path string, f os.FileInfo, err error) error {
if !f.IsDir() {
fileList = append(fileList, path)
}
return nil
})
matches := []string{}
for _, f := range fileList {
cache, _ := repo.LoadCacheFile(f)
repoName := filepath.Base(strings.TrimRight(f, "-cache.txt"))
for k, _ := range cache.Entries {
if strings.Contains(k, name) {
matches = append(matches, repoName+"/"+k)
}
}
}
return matches, nil
}

@ -62,15 +62,12 @@ func AddChartToLocalRepo(ch *chart.Chart, path string) error {
return nil
}
func ReindexCacheFile(ch *chart.Chart, path string) error {
name := ch.Chartfile().Name + "-" + ch.Chartfile().Version
fmt.Println("\nname: " + name)
func LoadCacheFile(path string) (*CacheFile, error) {
b, err := ioutil.ReadFile(path)
if err != nil {
fmt.Println("read file err")
fmt.Printf("err, %s", err)
return err
return nil, err
}
var y CacheFile
@ -78,13 +75,16 @@ func ReindexCacheFile(ch *chart.Chart, path string) error {
if err != nil {
fmt.Println("error unmarshaling")
fmt.Println("err, %s", err)
return err
return nil, err
}
fmt.Println("%v\n", y)
return &y, nil
}
func ReindexCacheFile(ch *chart.Chart, path string) error {
name := ch.Chartfile().Name + "-" + ch.Chartfile().Version
y, _ := LoadCacheFile(path) //TODO: handle err later
found := false
for k, v := range y.Entries {
fmt.Printf("in here: %v", v)
fmt.Printf("in here: %v", k)
for k, _ := range y.Entries {
if k == name {
found = true
break

Loading…
Cancel
Save