Skip to content

Commit 46ca8e7

Browse files
fix: secret file reading (#45)
* fix: secret file reading * do ToUpper for keys not only for cli args * add tests
1 parent 27511e3 commit 46ca8e7

File tree

3 files changed

+42
-8
lines changed

3 files changed

+42
-8
lines changed

cmd/root.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,10 @@ func readYamlFile(file string) (map[string]string, error) {
330330
}
331331

332332
func readEnvs(path string, envs map[string]string) bool {
333+
return readEnvsEx(path, envs, false)
334+
}
335+
336+
func readEnvsEx(path string, envs map[string]string, caseInsensitive bool) bool {
333337
if _, err := os.Stat(path); err == nil {
334338
var env map[string]string
335339
if ext := filepath.Ext(path); ext == ".yml" || ext == ".yaml" {
@@ -341,6 +345,9 @@ func readEnvs(path string, envs map[string]string) bool {
341345
log.Fatalf("Error loading from %s: %v", path, err)
342346
}
343347
for k, v := range env {
348+
if caseInsensitive {
349+
k = strings.ToUpper(k)
350+
}
344351
if _, ok := envs[k]; !ok {
345352
envs[k] = v
346353
}
@@ -411,14 +418,9 @@ func newRunCommand(ctx context.Context, input *Input) func(*cobra.Command, []str
411418

412419
log.Debugf("Loading secrets from %s", input.Secretfile())
413420
secrets := newSecrets(input.secrets)
414-
_ = readEnvs(input.Secretfile(), secrets)
415-
hasGitHubToken := false
416-
for k := range secrets {
417-
if strings.EqualFold(k, "GITHUB_TOKEN") {
418-
hasGitHubToken = true
419-
}
420-
}
421-
if !hasGitHubToken {
421+
_ = readEnvsEx(input.Secretfile(), secrets, true)
422+
423+
if _, hasGitHubToken := secrets["GITHUB_TOKEN"]; !hasGitHubToken {
422424
secrets["GITHUB_TOKEN"], _ = gh.GetToken(ctx, "")
423425
}
424426

cmd/root_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package cmd
2+
3+
import (
4+
"path"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestReadSecrets(t *testing.T) {
11+
secrets := map[string]string{}
12+
ret := readEnvsEx(path.Join("testdata", "secrets.yml"), secrets, true)
13+
assert.True(t, ret)
14+
assert.Equal(t, `line1
15+
line2
16+
line3
17+
`, secrets["MYSECRET"])
18+
}
19+
20+
func TestReadEnv(t *testing.T) {
21+
secrets := map[string]string{}
22+
ret := readEnvs(path.Join("testdata", "secrets.yml"), secrets)
23+
assert.True(t, ret)
24+
assert.Equal(t, `line1
25+
line2
26+
line3
27+
`, secrets["mysecret"])
28+
}

cmd/testdata/secrets.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
mysecret: |
2+
line1
3+
line2
4+
line3

0 commit comments

Comments
 (0)