github.com/jenkins-x/jx/v2@v2.1.155/pkg/cmd/step/step_override_requirements.go (about) 1 package step 2 3 import ( 4 "github.com/jenkins-x/jx-logging/pkg/log" 5 "github.com/jenkins-x/jx/v2/pkg/cloud/gke" 6 "github.com/jenkins-x/jx/v2/pkg/cmd/helper" 7 "github.com/jenkins-x/jx/v2/pkg/cmd/opts" 8 "github.com/jenkins-x/jx/v2/pkg/config" 9 "github.com/pkg/errors" 10 "github.com/spf13/cobra" 11 ) 12 13 // StepOverrideRequirementsOptions contains the command line flags 14 type StepOverrideRequirementsOptions struct { 15 *opts.CommonOptions 16 Dir string 17 } 18 19 // NewCmdStepOverrideRequirements creates the `jx step verify pod` command 20 func NewCmdStepOverrideRequirements(commonOpts *opts.CommonOptions) *cobra.Command { 21 22 options := &StepOverrideRequirementsOptions{ 23 CommonOptions: commonOpts, 24 } 25 26 cmd := &cobra.Command{ 27 Use: "override-requirements", 28 Short: "Overrides requirements with environment variables to be persisted in the `jx-requirements.yml`", 29 Run: func(cmd *cobra.Command, args []string) { 30 options.Cmd = cmd 31 options.Args = args 32 err := options.Run() 33 helper.CheckErr(err) 34 }, 35 } 36 37 cmd.Flags().StringVarP(&options.Dir, "dir", "d", ".", "the directory to look for the install requirements file") 38 39 return cmd 40 } 41 42 // Run implements this command 43 func (o *StepOverrideRequirementsOptions) Run() error { 44 requirements, requirementsFileName, err := config.LoadRequirementsConfig(o.Dir, config.DefaultFailOnValidationError) 45 if err != nil { 46 return err 47 } 48 49 requirements, err = o.overrideRequirements(requirements, requirementsFileName) 50 if err != nil { 51 return err 52 } 53 54 return nil 55 } 56 57 // gatherRequirements gathers cluster requirements and connects to the cluster if required 58 func (o *StepOverrideRequirementsOptions) overrideRequirements(requirements *config.RequirementsConfig, requirementsFileName string) (*config.RequirementsConfig, error) { 59 log.Logger().Debug("Overriding Requirements...") 60 61 requirements.OverrideRequirementsFromEnvironment(func() gke.GClouder { 62 return o.GCloud() 63 }) 64 65 log.Logger().Debugf("saving %s", requirementsFileName) 66 err := requirements.SaveConfig(requirementsFileName) 67 if err != nil { 68 return nil, errors.Wrapf(err, "save config %s", requirementsFileName) 69 } 70 71 return requirements, nil 72 }