diff --git a/pipeline/env/env.go b/pipeline/env/env.go index 4724a9450..b9b2ad201 100644 --- a/pipeline/env/env.go +++ b/pipeline/env/env.go @@ -3,7 +3,7 @@ package env import ( - "io/ioutil" + "bufio" "os" "github.com/goreleaser/goreleaser/context" @@ -59,12 +59,13 @@ func loadEnv(env, path string) (string, error) { if err != nil { return "", err } - bts, err := ioutil.ReadFile(path) + f, err := os.Open(path) if os.IsNotExist(err) { return "", nil } if err != nil { return "", err } - return string(bts), nil + bts, _, err := bufio.NewReader(f).ReadLine() + return string(bts), err } diff --git a/pipeline/env/env_test.go b/pipeline/env/env_test.go index 15e2dfc82..6ff57e196 100644 --- a/pipeline/env/env_test.go +++ b/pipeline/env/env_test.go @@ -126,6 +126,16 @@ func TestLoadEnv(t *testing.T) { assert.NoError(tt, err) assert.Equal(tt, "123", v) }) + t.Run("env file with an empty line at the end", func(tt *testing.T) { + var env = "SUPER_SECRET_ENV_NOPE" + assert.NoError(tt, os.Unsetenv(env)) + f, err := ioutil.TempFile("", "token") + assert.NoError(t, err) + fmt.Fprintf(f, "123\n") + v, err := loadEnv(env, f.Name()) + assert.NoError(tt, err) + assert.Equal(tt, "123", v) + }) t.Run("env file is not readable", func(tt *testing.T) { var env = "SUPER_SECRET_ENV_NOPE" assert.NoError(tt, os.Unsetenv(env))