import os, osproc, strutils, parseopt, strtabs
const printVarsScript = "/tmp/printVars.sh "
proc createScript(): void =
if existsFile(printVarsScript.strip) != true:
echo("Creating script")
writeFile(printVarsScript.strip,
"#!/bin/sh \n" &
"tmpa=/tmp/a \n" &
"tmpb=/tmp/b \n" &
"set -a \n" &
"env > $tmpa \n" &
". $1 \n" &
"env > $tmpb \n" &
"diff $tmp{a,b} | sed -ne 's/^> //p' \n" &
"rm $tmp{a,b} \n")
return
proc confVar*(confFile: string): PStringTable =
createScript()
var
command = "sh " & printVarsScript & confFile
commandResult = execCmdEx(command)
rawVars = commandResult.output.strip
result = newStringTable(modeCaseSensitive)
for line in splitLines(rawVars) :
var
lineSplit = split(line, '=')
result[lineSplit[0]] = lineSplit[1]
return