diff --git a/README.md b/README.md index d5370ec..f9363c7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# GoDotEnv [![Build Status](https://travis-ci.org/joho/godotenv.svg?branch=master)](https://travis-ci.org/joho/godotenv) [![Build status](https://ci.appveyor.com/api/projects/status/9v40vnfvvgde64u4?svg=true)](https://ci.appveyor.com/project/joho/godotenv) [![Go Report Card](https://goreportcard.com/badge/github.com/joho/godotenv)](https://goreportcard.com/report/github.com/joho/godotenv) +# GoDotEnv [![Build Status](https://travis-ci.org/mniak/godotenv.svg?branch=master)](https://travis-ci.org/mniak/godotenv) [![Build status](https://ci.appveyor.com/api/projects/status/9v40vnfvvgde64u4?svg=true)](https://ci.appveyor.com/project/mniak/godotenv) [![Go Report Card](https://goreportcard.com/badge/github.com/mniak/godotenv)](https://goreportcard.com/report/github.com/mniak/godotenv) A Go (golang) port of the Ruby dotenv project (which loads env vars from a .env file) @@ -17,12 +17,12 @@ There is test coverage and CI for both linuxish and windows environments, but I As a library ```shell -go get github.com/joho/godotenv +go get github.com/mniak/godotenv ``` or if you want to use it as a bin command ```shell -go get github.com/joho/godotenv/cmd/godotenv +go get github.com/mniak/godotenv/cmd/godotenv ``` ## Usage @@ -40,7 +40,7 @@ Then in your Go app you can do something like package main import ( - "github.com/joho/godotenv" + "github.com/mniak/godotenv" "log" "os" ) @@ -61,7 +61,7 @@ func main() { If you're even lazier than that, you can just take advantage of the autoload package which will read in `.env` on import ```go -import _ "github.com/joho/godotenv/autoload" +import _ "github.com/mniak/godotenv/autoload" ``` While `.env` in the project root is the default, you don't have to be constrained, both examples below are 100% legit @@ -177,11 +177,11 @@ Contributions are most welcome! The parser itself is pretty stupidly naive and I Releases should follow [Semver](http://semver.org/) though the first couple of releases are `v1` and `v1.1`. -Use [annotated tags for all releases](https://github.com/joho/godotenv/issues/30). Example `git tag -a v1.2.1` +Use [annotated tags for all releases](https://github.com/mniak/godotenv/issues/30). Example `git tag -a v1.2.1` ## CI -Linux: [![Build Status](https://travis-ci.org/joho/godotenv.svg?branch=master)](https://travis-ci.org/joho/godotenv) Windows: [![Build status](https://ci.appveyor.com/api/projects/status/9v40vnfvvgde64u4)](https://ci.appveyor.com/project/joho/godotenv) +Linux: [![Build Status](https://travis-ci.org/mniak/godotenv.svg?branch=master)](https://travis-ci.org/mniak/godotenv) Windows: [![Build status](https://ci.appveyor.com/api/projects/status/9v40vnfvvgde64u4)](https://ci.appveyor.com/project/mniak/godotenv) ## Who? diff --git a/autoload/autoload.go b/autoload/autoload.go index fbcd2bd..e5b43a0 100644 --- a/autoload/autoload.go +++ b/autoload/autoload.go @@ -3,12 +3,12 @@ package autoload /* You can just read the .env file on import just by doing - import _ "github.com/joho/godotenv/autoload" + import _ "github.com/mniak/godotenv/autoload" And bob's your mother's brother */ -import "github.com/joho/godotenv" +import "github.com/mniak/godotenv" func init() { godotenv.Load() diff --git a/cmd/godotenv/cmd.go b/cmd/godotenv/cmd.go index 8dce420..f0fe5be 100644 --- a/cmd/godotenv/cmd.go +++ b/cmd/godotenv/cmd.go @@ -7,7 +7,7 @@ import ( "strings" - "github.com/joho/godotenv" + "github.com/mniak/godotenv" ) func main() { diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9d6254c --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/mniak/godotenv + +go 1.14 diff --git a/godotenv.go b/godotenv.go index 69e816c..50d97bd 100644 --- a/godotenv.go +++ b/godotenv.go @@ -1,6 +1,6 @@ // Package godotenv is a go port of the ruby dotenv library (https://github.com/bkeepers/dotenv) // -// Examples/readme can be found on the github page at https://github.com/joho/godotenv +// Examples/readme can be found on the github page at https://github.com/mniak/godotenv // // The TL;DR is that you make a .env file that looks something like // @@ -22,6 +22,7 @@ import ( "os/exec" "regexp" "sort" + "strconv" "strings" ) @@ -169,7 +170,11 @@ func Write(envMap map[string]string, filename string) error { func Marshal(envMap map[string]string) (string, error) { lines := make([]string, 0, len(envMap)) for k, v := range envMap { - lines = append(lines, fmt.Sprintf(`%s="%s"`, k, doubleQuoteEscape(v))) + 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))) + } } sort.Strings(lines) return strings.Join(lines, "\n"), nil diff --git a/godotenv_test.go b/godotenv_test.go index d1f73cb..17dc243 100644 --- a/godotenv_test.go +++ b/godotenv_test.go @@ -445,7 +445,8 @@ func TestWrite(t *testing.T) { writeAndCompare(`foo="\n\r\\r!"`, `foo="\n\r\\r\!"`) // lines should be sorted writeAndCompare("foo=bar\nbaz=buzz", "baz=\"buzz\"\nfoo=\"bar\"") - + // integers should not be quoted + writeAndCompare(`key="10"`, `key=10`) } func TestRoundtrip(t *testing.T) {