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
}