From 89b74cec1e014dba31e2b728e3544941d6edd2c2 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Thu, 16 Jan 2025 13:47:30 -0500 Subject: [PATCH] Allow removing keys from config file --- core/configParser.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/configParser.go b/core/configParser.go index 9754168..9ee44af 100644 --- a/core/configParser.go +++ b/core/configParser.go @@ -74,8 +74,9 @@ func GenDeviceIDList(errorOnFail bool) *[]fs.DirEntry { // WriteConfig writes the provided key-value pairs under the specified section headers in the libmutton.ini file. // Requires: valuesToWrite (a slice of length 3 arrays each containing a section, a key name, and a value), +// prune (a slice similar to valuesToWrite to allow removing the specified keys from an existing config) // append (set to true to append to the existing libmutton.ini file, false to overwrite it). -func WriteConfig(valuesToWrite [][3]string, append bool) { +func WriteConfig(valuesToWrite [][3]string, keysToPrune [][2]string, append bool) { var cfg *ini.File if append { @@ -101,6 +102,14 @@ func WriteConfig(valuesToWrite [][3]string, append bool) { section.Key(trio[1]).SetValue(trio[2]) } + // prune specified keys from the existing config + if append && len(keysToPrune) > 0 { + // remove specified keys pairs from the existing config + for _, pair := range keysToPrune { + cfg.Section(pair[0]).DeleteKey(pair[1]) + } + } + // save to libmutton.ini err := cfg.SaveTo(ConfigPath) if err != nil {