func SetKey()

in internal/cfgfile/cfg.go [48:84]


func SetKey(key, value string) error {
	homeDir, err := os.UserHomeDir()
	if err != nil {
		return fmt.Errorf("retrieving the user's HOME directory: %v", err)
	}
	path := filepath.Join(homeDir, CfgDirName, CfgFileName)
	// #nosec G304
	b, err := os.ReadFile(path)
	if err != nil {
		return fmt.Errorf("reading config: %v", err)
	}

	var cfg Configuration
	if err := json.Unmarshal(b, &cfg); err != nil {
		return fmt.Errorf("unmarshalling the config: %v", err)
	}
	newCfg, err := updateConfiguration(cfg, key, value)
	if err != nil {
		return err
	}
	b, err = json.Marshal(*newCfg)
	if err != nil {
		return fmt.Errorf("marshalling the updated config: %v", err)
	}
	// #nosec G304
	f, err := os.OpenFile(path, os.O_TRUNC|os.O_WRONLY, 0)
	if err != nil {
		return fmt.Errorf("open config for writing: %v", err)
	}

	// #nosec G307
	defer f.Close()
	if _, err := f.Write(b); err != nil {
		return fmt.Errorf("writing config: %v", err)
	}
	return nil
}