sigs.k8s.io/kubebuilder/v3@v3.14.0/pkg/cli/alpha/generate.go (about) 1 /* 2 Copyright 2023 The Kubernetes Authors. 3 Licensed under the Apache License, Version 2.0 (the "License"); 4 you may not use this file except in compliance with the License. 5 You may obtain a copy of the License at 6 http://www.apache.org/licenses/LICENSE-2.0 7 Unless required by applicable law or agreed to in writing, software 8 distributed under the License is distributed on an "AS IS" BASIS, 9 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 See the License for the specific language governing permissions and 11 limitations under the License. 12 */ 13 14 package alpha 15 16 import ( 17 log "github.com/sirupsen/logrus" 18 19 "github.com/spf13/cobra" 20 "sigs.k8s.io/kubebuilder/v3/pkg/rescaffold" 21 ) 22 23 // NewScaffoldCommand return a new scaffold command 24 func NewScaffoldCommand() *cobra.Command { 25 opts := rescaffold.MigrateOptions{} 26 scaffoldCmd := &cobra.Command{ 27 Use: "generate", 28 Short: "Re-scaffold an existing Kuberbuilder project", 29 Long: `It's an experimental feature that has the purpose of re-scaffolding the whole project from the scratch 30 using the current version of KubeBuilder binary available. 31 # make sure the PROJECT file is in the 'input-dir' argument, the default is the current directory. 32 $ kubebuilder alpha generate --input-dir="./test" --output-dir="./my-output" 33 Then we will re-scaffold the project by Kubebuilder in the directory specified by 'output-dir'. 34 `, 35 PreRunE: func(cmd *cobra.Command, _ []string) error { 36 return opts.Validate() 37 }, 38 Run: func(cmd *cobra.Command, args []string) { 39 if err := opts.Rescaffold(); err != nil { 40 log.Fatalf("Failed to rescaffold %s", err) 41 } 42 }, 43 } 44 scaffoldCmd.Flags().StringVar(&opts.InputDir, "input-dir", "", 45 "path to a Kubebuilder project file if not in the current working directory") 46 scaffoldCmd.Flags().StringVar(&opts.OutputDir, "output-dir", "", 47 "path to output the scaffolding. defaults a directory in the current working directory") 48 49 return scaffoldCmd 50 }