// Save all the information present in this helper to a config file. An explicit config // file path can be provided, if not use the established conventions about config // loading rules. Will create a new config file if one can't be found at all. Will only // succeed if all required info is present. func (o *LoginOptions) SaveConfig() (bool, error) { if len(o.Username) == 0 { return false, fmt.Errorf("Insufficient data to merge configuration.") } globalExistedBefore := true if _, err := os.Stat(o.PathOptions.GlobalFile); os.IsNotExist(err) { globalExistedBefore = false } newConfig, err := config.CreateConfig(o.Project, o.Config) if err != nil { return false, err } cwd, err := os.Getwd() if err != nil { return false, err } baseDir, err := cmdutil.MakeAbs(filepath.Dir(o.PathOptions.GetDefaultFilename()), cwd) if err != nil { return false, err } if err := config.RelativizeClientConfigPaths(newConfig, baseDir); err != nil { return false, err } configToWrite, err := config.MergeConfig(*o.StartingKubeConfig, *newConfig) if err != nil { return false, err } if err := kclientcmd.ModifyConfig(o.PathOptions, *configToWrite, true); err != nil { if !os.IsPermission(err) { return false, err } out := &bytes.Buffer{} cmderr.PrintError(errors.ErrKubeConfigNotWriteable(o.PathOptions.GetDefaultFilename(), o.PathOptions.IsExplicitFile(), err), out) return false, fmt.Errorf("%v", out) } created := false if _, err := os.Stat(o.PathOptions.GlobalFile); err == nil { created = created || !globalExistedBefore } return created, nil }
// Save all the information present in this helper to a config file. An explicit config // file path can be provided, if not use the established conventions about config // loading rules. Will create a new config file if one can't be found at all. Will only // succeed if all required info is present. func (o *LoginOptions) SaveConfig() (bool, error) { if len(o.Username) == 0 { return false, fmt.Errorf("Insufficient data to merge configuration.") } globalExistedBefore := true if _, err := os.Stat(o.PathOptions.GlobalFile); os.IsNotExist(err) { globalExistedBefore = false } newConfig, err := config.CreateConfig(o.Project, o.Config) if err != nil { return false, err } cwd, err := os.Getwd() if err != nil { return false, err } baseDir, err := cmdutil.MakeAbs(filepath.Dir(o.PathOptions.GetDefaultFilename()), cwd) if err != nil { return false, err } if err := config.RelativizeClientConfigPaths(newConfig, baseDir); err != nil { return false, err } configToWrite, err := config.MergeConfig(*o.StartingKubeConfig, *newConfig) if err != nil { return false, err } if err := kubecmdconfig.ModifyConfig(o.PathOptions, *configToWrite); err != nil { return false, err } created := false if _, err := os.Stat(o.PathOptions.GlobalFile); err == nil { created = created || !globalExistedBefore } return created, nil }