**Intro**

I am using parsecfg to parse an .ini style config file, specifically the one 
that handles optional WSL settings. I am tinkering on a tool to easily read and 
write those values from the command line without opening a text editor. I think 
parsecfg would be useful for this, but I am having some issues. parsecfg could 
also be useful for reading and writing .desktop files and systemd unit files.

[https://nim-lang.org/docs/parsecfg.html](https://nim-lang.org/docs/parsecfg.html)

**Sample .INI**

Here is my sample .ini file:
    
    
    [automount]
    enabled = true
    
    
    Run

**Handling case sensitivity in getSectionValue calls**

First, calling section values with .getSectionValue is case-sensitive. The 
other application parsing this .ini is case-insensitive, so my application 
needs to accommodate for this.

I am not sure how to handle all of the case possibilities inside the 
.getSectionValue call though.

Right now:
    
    
    import parsecfg
    var wslconf = loadConfig("/etc/wsl.conf")
    echo wslconf.getSectionValue("automount","enabled")
    
    
    Run

will return "true" based on our sample .INI file above, but 
    
    
    wslconf.getSectionValue("Automount","enabled")
    
    
    Run

will return an empty string, because of the case mismatch between automount and 
Automount, even though that really doesn't matter for my purposes.

How can I handle all the possibilities of cases for automount in 
.getSectionValue?

**String returned on "true" and "false" when could be bool**

Second, with getSectionValue, parsecfg always returns a string value, even on 
"true" and "false". If it instead returned a Boolean value when the value read 
is "true" or "false" (also "yes" or "no", or "0" or "1") it would be easier to 
handle. Just an idea.

I worked around it this way:
    
    
    import parsecfg, strutils
    
    var wslconf = loadConfig("/etc/wsl.conf")
    
    if toLowerAscii(wslconf.getSectionValue("automount","enabled")) == "true":
       echo "automount enabled"
    else:
       echo "automount disabled"
    
    
    
    Run

Any suggestions on how else I could better handle this?

getSectionValue 
[https://github.com/nim-lang/Nim/blob/version-1-0/lib/pure/parsecfg.nim#L563](https://github.com/nim-lang/Nim/blob/version-1-0/lib/pure/parsecfg.nim#L563)

Reply via email to