github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/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/olli-ai/jx/v2/pkg/cloud/gke"
     6  	"github.com/olli-ai/jx/v2/pkg/cmd/helper"
     7  	"github.com/olli-ai/jx/v2/pkg/cmd/opts"
     8  	"github.com/olli-ai/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  }