From 19b5c2bf30561c9d0f6788e95bdf3a0722462f0b Mon Sep 17 00:00:00 2001 From: "John Barton (joho)" Date: Mon, 23 Mar 2015 12:15:01 +1100 Subject: [PATCH] Some golint feedback from http://goreportcard.com/report/joho/godotenv --- godotenv.go | 81 +++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/godotenv.go b/godotenv.go index 33bf84d..b3f61c3 100644 --- a/godotenv.go +++ b/godotenv.go @@ -1,18 +1,17 @@ -/* -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 - -The TL;DR is that you make a .env file that looks something like - - SOME_ENV_VAR=somevalue - -and then in your go code you can call - - godotenv.Load() - -and all the env vars declared in .env will be avaiable through os.Getenv("SOME_ENV_VAR") -*/ +// Package godotenv +// 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 +// +// The TL;DR is that you make a .env file that looks something like +// +// SOME_ENV_VAR=somevalue +// +// and then in your go code you can call +// +// godotenv.Load() +// +// and all the env vars declared in .env will be avaiable through os.Getenv("SOME_ENV_VAR") package godotenv import ( @@ -23,17 +22,17 @@ import ( "strings" ) -/* - Call this function as close as possible to the start of your program (ideally in main) - - If you call Load without any args it will default to loading .env in the current path - - You can otherwise tell it which files to load (there can be more than one) like - - godotenv.Load("fileone", "filetwo") - - It's important to note that it WILL NOT OVERRIDE an env variable that already exists - consider the .env file to set dev vars or sensible defaults -*/ +// Load will read your env file(s) and load them into ENV for this process. +// +// Call this function as close as possible to the start of your program (ideally in main) +// +// If you call Load without any args it will default to loading .env in the current path +// +// You can otherwise tell it which files to load (there can be more than one) like +// +// godotenv.Load("fileone", "filetwo") +// +// It's important to note that it WILL NOT OVERRIDE an env variable that already exists - consider the .env file to set dev vars or sensible defaults func Load(filenames ...string) (err error) { filenames = filenamesOrDefault(filenames) @@ -46,10 +45,8 @@ func Load(filenames ...string) (err error) { return } -/* - Read all env (with same file loading semantics as Load) but return values as - a map rather than automatically writing values into env -*/ +// Read all env (with same file loading semantics as Load) but return values as +// a map rather than automatically writing values into env func Read(filenames ...string) (envMap map[string]string, err error) { filenames = filenamesOrDefault(filenames) envMap = make(map[string]string) @@ -70,15 +67,13 @@ func Read(filenames ...string) (envMap map[string]string, err error) { return } -/* - Loads env vars from the specified filenames (empty map falls back to default) - then executes the cmd specified. - - Simply hooks up os.Stdin/err/out to the command and calls Run() - - If you want more fine grained control over your command it's recommended - that you use `Load()` or `Read()` and the `os/exec` package yourself. -*/ +// Exec loads env vars from the specified filenames (empty map falls back to default) +// then executes the cmd specified. +// +// Simply hooks up os.Stdin/err/out to the command and calls Run() +// +// If you want more fine grained control over your command it's recommended +// that you use `Load()` or `Read()` and the `os/exec` package yourself. func Exec(filenames []string, cmd string, cmdArgs []string) error { Load(filenames...) @@ -97,10 +92,10 @@ func filenamesOrDefault(filenames []string) []string { } } -func loadFile(filename string) (err error) { +func loadFile(filename string) error { envMap, err := readFile(filename) if err != nil { - return + return err } for key, value := range envMap { @@ -109,7 +104,7 @@ func loadFile(filename string) (err error) { } } - return + return nil } func readFile(filename string) (envMap map[string]string, err error) { @@ -149,7 +144,7 @@ func parseLine(line string) (key string, value string, err error) { if strings.Contains(line, "#") { segmentsBetweenHashes := strings.Split(line, "#") quotesAreOpen := false - segmentsToKeep := make([]string, 0) + var segmentsToKeep []string for _, segment := range segmentsBetweenHashes { if strings.Count(segment, "\"") == 1 || strings.Count(segment, "'") == 1 { if quotesAreOpen {