diff --git a/cmd/chart-repo-sync/.gitignore b/cmd/chart-repo/.gitignore similarity index 100% rename from cmd/chart-repo-sync/.gitignore rename to cmd/chart-repo/.gitignore diff --git a/cmd/chart-repo-sync/Dockerfile b/cmd/chart-repo/Dockerfile similarity index 100% rename from cmd/chart-repo-sync/Dockerfile rename to cmd/chart-repo/Dockerfile diff --git a/cmd/chart-repo-sync/Gopkg.lock b/cmd/chart-repo/Gopkg.lock similarity index 100% rename from cmd/chart-repo-sync/Gopkg.lock rename to cmd/chart-repo/Gopkg.lock diff --git a/cmd/chart-repo-sync/Gopkg.toml b/cmd/chart-repo/Gopkg.toml similarity index 100% rename from cmd/chart-repo-sync/Gopkg.toml rename to cmd/chart-repo/Gopkg.toml diff --git a/cmd/chart-repo-sync/addRepo.go b/cmd/chart-repo/add.go similarity index 79% rename from cmd/chart-repo-sync/addRepo.go rename to cmd/chart-repo/add.go index f95ed10b001..449529593b1 100644 --- a/cmd/chart-repo-sync/addRepo.go +++ b/cmd/chart-repo/add.go @@ -24,13 +24,14 @@ import ( "github.com/kubeapps/common/datastore" ) -var addRepoCmd = &cobra.Command{ - Use: "add SUBCOMMAND", - Short: "add a new chart repository", +var syncCmd = &cobra.Command{ + Use: "add [REPO NAME] [REPO URL]", + Short: "add a new chart repository, and resync the whole data", Run: func(cmd *cobra.Command, args []string) { if len(args) != 2 { logrus.Info("Need exactly two arguments: [REPO NAME] [REPO URL]") - cmd.Usage() + cmd.Help() + return } mongoURL, err := cmd.Flags().GetString("mongo-url") @@ -66,10 +67,3 @@ var addRepoCmd = &cobra.Command{ logrus.Infof("Successfully added the chart repository %s to database", args[0]) }, } - -func init() { - addRepoCmd.Flags().String("mongo-url", "localhost", "MongoDB URL (see https://godoc.org/labix.org/v2/mgo#Dial for format)") - addRepoCmd.Flags().String("mongo-database", "charts", "MongoDB database") - addRepoCmd.Flags().String("mongo-user", "", "MongoDB user") - addRepoCmd.Flags().Bool("debug", false, "verbose logging") -} diff --git a/cmd/chart-repo-sync/sync.go b/cmd/chart-repo/chart_repo.go similarity index 54% rename from cmd/chart-repo-sync/sync.go rename to cmd/chart-repo/chart_repo.go index edc9cce2760..de8b194fffc 100644 --- a/cmd/chart-repo-sync/sync.go +++ b/cmd/chart-repo/chart_repo.go @@ -22,19 +22,29 @@ import ( "github.com/spf13/cobra" ) -func newRootCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "chartsvc", - Short: "Kubeapps Chart Repository utility", - } - - cmd.AddCommand(addRepoCmd, deleteRepoCmd) - return cmd +var RootCmd = &cobra.Command{ + Use: "chart-repo", + Short: "Kubeapps Chart Repository utility", + Run: func(cmd *cobra.Command, args []string) { + cmd.Help() + }, } func main() { - cmd := newRootCmd() + cmd := RootCmd if err := cmd.Execute(); err != nil { os.Exit(1) } -} \ No newline at end of file +} + +func init() { + cmds := []*cobra.Command{syncCmd, deleteCmd} + + for _, cmd := range cmds { + RootCmd.AddCommand(cmd) + cmd.Flags().String("mongo-url", "localhost", "MongoDB URL (see https://godoc.org/labix.org/v2/mgo#Dial for format)") + cmd.Flags().String("mongo-database", "charts", "MongoDB database") + cmd.Flags().String("mongo-user", "", "MongoDB user") + cmd.Flags().Bool("debug", false, "verbose logging") + } +} diff --git a/cmd/chart-repo-sync/deleteRepo.go b/cmd/chart-repo/delete.go similarity index 84% rename from cmd/chart-repo-sync/deleteRepo.go rename to cmd/chart-repo/delete.go index 5c2bba6e562..bd8fe8b26f1 100644 --- a/cmd/chart-repo-sync/deleteRepo.go +++ b/cmd/chart-repo/delete.go @@ -20,10 +20,11 @@ import ( "github.com/spf13/cobra" ) -var deleteRepoCmd = &cobra.Command{ - Use: "delete SUBCOMMAND", - Short: "delete a new chart repository", +var deleteCmd = &cobra.Command{ + Use: "delete [REPO NAME]", + Short: "delete a chart repository", Run: func(cmd *cobra.Command, args []string) { - cmd.Usage() + cmd.Help() + return }, } diff --git a/cmd/chart-repo-sync/testdata/valid-index.yaml b/cmd/chart-repo/testdata/valid-index.yaml similarity index 100% rename from cmd/chart-repo-sync/testdata/valid-index.yaml rename to cmd/chart-repo/testdata/valid-index.yaml diff --git a/cmd/chart-repo-sync/types.go b/cmd/chart-repo/types.go similarity index 100% rename from cmd/chart-repo-sync/types.go rename to cmd/chart-repo/types.go diff --git a/cmd/chart-repo-sync/utils.go b/cmd/chart-repo/utils.go similarity index 96% rename from cmd/chart-repo-sync/utils.go rename to cmd/chart-repo/utils.go index d19ffaddead..29c2b42aa86 100644 --- a/cmd/chart-repo-sync/utils.go +++ b/cmd/chart-repo/utils.go @@ -131,6 +131,15 @@ func syncRepo(dbSession datastore.Session, repoName, repoURL string) error { return nil } +func deleteRepo(dbSession datastore.Session, repoName string) error { + err := removeCharts(dbSession, repoName) + if err != nil { + return err + } + + return nil +} + func fetchRepoIndex(repoURL *url.URL) (*helmrepo.IndexFile, error) { // use a copy of the URL struct so we don't modify the original indexURL := *repoURL @@ -221,6 +230,19 @@ func importCharts(dbSession datastore.Session, charts []chart) error { return err } +func removeCharts(dbSession datastore.Session, repoName string) error { + db, closer := dbSession.DB() + defer closer() + bulk := db.C(chartCollection).Bulk() + + bulk.RemoveAll(bson.M{ + "repo.name": repoName, + }) + + _, err := bulk.Run() + return err +} + func importWorker(dbSession datastore.Session, wg *sync.WaitGroup, icons <-chan chart, chartFiles <-chan importChartFilesJob) { defer wg.Done() for c := range icons { diff --git a/cmd/chart-repo-sync/sync_test.go b/cmd/chart-repo/utils_test.go similarity index 100% rename from cmd/chart-repo-sync/sync_test.go rename to cmd/chart-repo/utils_test.go diff --git a/cmd/chart-repo-sync/version.go b/cmd/chart-repo/version.go similarity index 100% rename from cmd/chart-repo-sync/version.go rename to cmd/chart-repo/version.go