From 41533b9e1a9e3dd36b357f6de0ce41187d827f4d Mon Sep 17 00:00:00 2001 From: Sunil Arora Date: Mon, 2 Jul 2018 12:42:10 -0700 Subject: [PATCH] implemented vendor update --- cmd/kubebuilder/initproject/project.go | 28 +++++++++++++++---------- cmd/kubebuilder/v1/api.go | 4 ++-- cmd/kubebuilder/v1/commands.go | 3 +-- cmd/kubebuilder/v1/vendor_update.go | 29 ++++++++++++++++++++++++++ testv0.sh | 1 + 5 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 cmd/kubebuilder/v1/vendor_update.go diff --git a/cmd/kubebuilder/initproject/project.go b/cmd/kubebuilder/initproject/project.go index b65f267754..8582ddc886 100644 --- a/cmd/kubebuilder/initproject/project.go +++ b/cmd/kubebuilder/initproject/project.go @@ -34,12 +34,12 @@ import ( ) type projectOptions struct { - prj *project.Project - bp *project.Boilerplate - gopkg *project.GopkgToml - mgr *manager.Cmd - dkr *manager.Dockerfile - dep bool + prj *project.Project + bp *project.Boilerplate + gopkg *project.GopkgToml + mgr *manager.Cmd + dkr *manager.Dockerfile + dep bool depFlag *flag.Flag } @@ -65,7 +65,13 @@ func (o *projectOptions) RunInit() { s = &scaffold.Scaffold{} err = s.Execute(input.Options{ProjectPath: p.Path, BoilerplatePath: b.Path}, - o.gopkg, o.mgr, &project.Makefile{}, o.dkr, &manager.APIs{}, &manager.Controller{}, &manager.Config{}, + o.gopkg, + o.mgr, + &project.Makefile{}, + o.dkr, + &manager.APIs{}, + &manager.Controller{}, + &manager.Config{}, &project.GitIgnore{}) if err != nil { log.Fatal(err) @@ -141,7 +147,7 @@ kubebuilder init --domain k8s.io --license apache2 --owner "The Kubernetes autho // projectForFlags registers flags for Project fields and returns the Project func projectForFlags(f *flag.FlagSet) *project.Project { p := &project.Project{} - f.StringVar(&p.Repo, "repo", "", v1comment + "name of the github repo. "+ + f.StringVar(&p.Repo, "repo", "", v1comment+"name of the github repo. "+ "defaults to the go package of the current working directory.") p.Version = "2" p.Domain = "k8s.io" @@ -151,10 +157,10 @@ func projectForFlags(f *flag.FlagSet) *project.Project { // boilerplateForFlags registers flags for Boilerplate fields and returns the Boilerplate func boilerplateForFlags(f *flag.FlagSet) *project.Boilerplate { b := &project.Boilerplate{} - f.StringVar(&b.Path, "path", "", v1comment + "path for boilerplate") + f.StringVar(&b.Path, "path", "", v1comment+"path for boilerplate") f.StringVar(&b.License, "license", "apache2", - v1comment + "license to use to boilerplate. Maybe one of apache2,none") + v1comment+"license to use to boilerplate. Maybe one of apache2,none") f.StringVar(&b.Owner, "owner", "", - v1comment + "Owner to add to the copyright") + v1comment+"Owner to add to the copyright") return b } diff --git a/cmd/kubebuilder/v1/api.go b/cmd/kubebuilder/v1/api.go index 342d0101b6..2e730a82a1 100644 --- a/cmd/kubebuilder/v1/api.go +++ b/cmd/kubebuilder/v1/api.go @@ -159,10 +159,10 @@ After the scaffold is written, api will run make on the project. cmd.AddCommand(apiCmd) } -// DieIfNoProject checks to make sure the command is run from a directory containing a project file. +// dieIfNoProject checks to make sure the command is run from a directory containing a project file. func dieIfNoProject() { if _, err := os.Stat("PROJECT"); os.IsNotExist(err) { - log.Fatalf("Command must be run from a diretory containing %s", "PROJECT") + log.Fatalf("Command must be run from a directory containing %s", "PROJECT") } } diff --git a/cmd/kubebuilder/v1/commands.go b/cmd/kubebuilder/v1/commands.go index acf46810d4..9e1edfeff9 100644 --- a/cmd/kubebuilder/v1/commands.go +++ b/cmd/kubebuilder/v1/commands.go @@ -22,8 +22,7 @@ import ( func AddCmds(cmd *cobra.Command) { AddAPICommand(cmd) - // TODO: User update commands from controller-tools once it is available - //update.AddUpdate(cmd) + cmd.AddCommand(vendorUpdateCmd()) cmd.Example = `# Initialize your project kubebuilder init --domain example.com --license apache2 --owner "The Kubernetes authors" diff --git a/cmd/kubebuilder/v1/vendor_update.go b/cmd/kubebuilder/v1/vendor_update.go new file mode 100644 index 0000000000..f3c7704812 --- /dev/null +++ b/cmd/kubebuilder/v1/vendor_update.go @@ -0,0 +1,29 @@ +package v1 + +import ( + "log" + + "github.com/spf13/cobra" + "sigs.k8s.io/controller-tools/pkg/scaffold" + "sigs.k8s.io/controller-tools/pkg/scaffold/input" + "sigs.k8s.io/controller-tools/pkg/scaffold/project" +) + +func vendorUpdateCmd() *cobra.Command { + return &cobra.Command{ + Use: "update", + Short: "updates vendor dependencies.", + Long: `updates vendor dependencies.`, + Example: `Update the vendor dependencies: +kubebuilder update vendor +`, + Run: func(cmd *cobra.Command, args []string) { + dieIfNoProject() + err := (&scaffold.Scaffold{}).Execute(input.Options{}, + &project.GopkgToml{}) + if err != nil { + log.Fatalf("error updating vendor dependecies %v", err) + } + }, + } +} diff --git a/testv0.sh b/testv0.sh index 1ba3ea797e..947cd4f164 100755 --- a/testv0.sh +++ b/testv0.sh @@ -522,6 +522,7 @@ build_kb setup_envs prepare_testdir_under_gopath + test_crd_validation test_generated_controller