joho / godotenv

A Go port of Ruby's dotenv library (Loads environment variables from .env files)
http://godoc.org/github.com/joho/godotenv
MIT License
8.18k stars 399 forks source link

Getting double quotes in values in env file #212

Open HimanshuJha2000 opened 1 year ago

HimanshuJha2000 commented 1 year ago

We have a usecase where we let user give their environment variables which we write to a env file using this package, that file will be sent to docker as an env file. While seeing the logs, I observe that I'm getting double quotes over values of env variables due to which the script which I mounted on my docker I've to assume that double quotes have been added to the values of env variables there as well . On debugging through this package, saw this line

for k, v := range envMap {
        if d, err := strconv.Atoi(v); err == nil {
            lines = append(lines, fmt.Sprintf(`%s=%d`, k, d))
        } else {
            lines = append(lines, fmt.Sprintf(`%s="%s"`, k, doubleQuoteEscape(v)))
        }
    }

Where we're adding double quotes over the values in map while appending to the file. Not sure if it's a bug or is being done in this way for some purpose. As of now I move to a different package but want to move back to this package only. Can you please help me with this?

fakeyanss commented 9 months ago

The same problem I have.

I want to set env_A="abc", and env_B="${env_A}_123".

But godotenv gives me env_B="\${env_A}_123", the variable syntax is not compatible.

Code like:

envMap, _ := godotenv.Read("some_file")
envMap["env_A"] = "abc"
_ = godotenv.Write(envMap, d.envFile)

envMap["env_B"] = "${env_A}_123"
_ = godotenv.Write(envMap, d.envFile)

and run cat some_file shows:

env_A="abc"
env_B="\${env_A}_123"
fakeyanss commented 9 months ago

https://github.com/joho/godotenv/commit/5d289f440502940d9fd8bed27b1c652fa5bca72d#diff-0c241b7f86e85ffca192108ab1d9b8458fbac1d26d43f62fe00d27acac809635R27