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  }