Skip to content
This repository was archived by the owner on Feb 16, 2023. It is now read-only.

Commit 3ba1201

Browse files
committed
Merge branch 'develop' into release/v0.43.0
2 parents d9dbccf + 9e9b268 commit 3ba1201

4 files changed

Lines changed: 213 additions & 39 deletions

File tree

internals/secrethub/migrate_config_envfile.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package secrethub
22

33
import (
4-
"bytes"
54
"fmt"
65
"io/ioutil"
76
"os"
@@ -40,18 +39,22 @@ func (cmd *MigrateConfigEnvfileCommand) Run() error {
4039
return err
4140
}
4241

43-
outFile, err := os.Create(".env")
42+
output, replaceCount, err := migrateTemplateTags(string(inFileContents), refMapping, "%s")
4443
if err != nil {
45-
return fmt.Errorf("cannot create output .env file: %s", err)
44+
return err
45+
}
46+
47+
inFileInfo, err := os.Stat(filepath)
48+
if err != nil {
49+
return ErrReadFile(filepath, err)
4650
}
47-
defer outFile.Close()
4851

49-
replaceCount, err := migrateTemplateTags(bytes.NewBuffer(inFileContents), outFile, refMapping, "%s")
52+
err = ioutil.WriteFile(".env", []byte(output), inFileInfo.Mode())
5053
if err != nil {
5154
return err
5255
}
5356

54-
fmt.Fprintf(cmd.io.Output(), "Created new .env file with %d op:// references\n", len(replaceCount))
57+
fmt.Fprintf(cmd.io.Output(), "Created new .env file with %d op:// references\n", replaceCount)
5558

5659
return nil
5760
}

internals/secrethub/migrate_config_references.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package secrethub
33
import (
44
"fmt"
55
"io/ioutil"
6+
"os"
67
"regexp"
78
"strings"
89

@@ -60,7 +61,12 @@ func migrateReferences(inFile string, outFile string, mapping referenceMapping)
6061
return nil, fmt.Errorf("no 1Password equivalent present in your migration plan for the following secrets:\n- %s", strings.Join(misses, "\n- "))
6162
}
6263

63-
err = ioutil.WriteFile(outFile, []byte(output), 0666)
64+
inFileInfo, err := os.Stat(inFile)
65+
if err != nil {
66+
return nil, ErrReadFile(inFile, err)
67+
}
68+
69+
err = ioutil.WriteFile(outFile, []byte(output), inFileInfo.Mode())
6470
if err != nil {
6571
return nil, err
6672
}

internals/secrethub/migrate_config_templates.go

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package secrethub
22

33
import (
44
"fmt"
5-
"io"
65
"io/ioutil"
76
"os"
87
"regexp"
@@ -13,7 +12,7 @@ import (
1312
)
1413

1514
var regexpSecretTemplatePath = regexp.MustCompile(`[A-Za-z0-9_\.\-\$\{\}]{2,}\/[A-Za-z0-9_\.\-\$\{\}]{2,}\/[A-Za-z0-9_\.\-\$\{\}\/]{2,}`)
16-
var regexpSecretTemplateTags = regexp.MustCompile(`{{(\s)*?(` + regexpSecretTemplatePath.String() + `)(\s)*?}}`)
15+
var regexpSecretTemplateTags = regexp.MustCompile(`{{\s*?(` + regexpSecretTemplatePath.String() + `)\s*?}}`)
1716

1817
func (cmd *MigrateConfigTemplatesCommand) Run() error {
1918
plan, err := getPlan(cmd.planFile)
@@ -31,36 +30,36 @@ func (cmd *MigrateConfigTemplatesCommand) Run() error {
3130
refMapping.stripSecretHubURIScheme()
3231

3332
for _, filepath := range cmd.inFiles {
34-
file, err := os.Open(filepath)
33+
inFileContents, err := ioutil.ReadFile(filepath)
3534
if err != nil {
3635
return ErrReadFile(filepath, err)
3736
}
38-
defer file.Close()
3937

40-
replaceCount, err := migrateTemplateTags(file, file, refMapping, "{{ %s }}")
38+
output, replaceCount, err := migrateTemplateTags(string(inFileContents), refMapping, "{{ %s }}")
4139
if err != nil {
4240
return err
4341
}
4442

45-
fmt.Fprintf(cmd.io.Output(), "Updated %s with %d op:// references\n", filepath, len(replaceCount))
43+
inFileInfo, err := os.Stat(filepath)
44+
if err != nil {
45+
return ErrReadFile(filepath, err)
46+
}
47+
48+
err = ioutil.WriteFile(filepath, []byte(output), inFileInfo.Mode())
49+
if err != nil {
50+
return err
51+
}
52+
53+
fmt.Fprintf(cmd.io.Output(), "Updated %s with %d op:// references\n", filepath, replaceCount)
4654
}
4755

4856
return nil
4957
}
5058

51-
func migrateTemplateTags(inFile io.Reader, outFile io.Writer, mapping referenceMapping, formatString string) ([]string, error) {
52-
raw, err := ioutil.ReadAll(inFile)
53-
if err != nil {
54-
return nil, ErrReadFile(inFile, err)
55-
}
56-
59+
func migrateTemplateTags(inFileContents string, mapping referenceMapping, formatString string) (string, int, error) {
5760
var hits, misses []string
58-
output := regexpSecretTemplateTags.ReplaceAllStringFunc(string(raw), func(templateTag string) string {
59-
path := regexpSecretTemplatePath.FindString(templateTag)
60-
if path == "" {
61-
misses = append(misses, templateTag)
62-
return ""
63-
}
61+
output := regexpSecretTemplateTags.ReplaceAllStringFunc(inFileContents, func(templateTag string) string {
62+
path := regexpSecretTemplateTags.FindStringSubmatch(templateTag)[1]
6463

6564
opRef, ok := mapping[path]
6665
if !ok {
@@ -86,15 +85,10 @@ func migrateTemplateTags(inFile io.Reader, outFile io.Writer, mapping referenceM
8685
errMsg += "\nDid you specify every possible value for your template variables? E.g. --var varname1=a,b,c,d --var varname2=x,y,z"
8786
}
8887

89-
return nil, fmt.Errorf(errMsg)
90-
}
91-
92-
_, err = io.WriteString(outFile, output)
93-
if err != nil {
94-
return nil, err
88+
return "", 0, fmt.Errorf(errMsg)
9589
}
9690

97-
return hits, nil
91+
return output, len(hits), nil
9892
}
9993

10094
type MigrateConfigTemplatesCommand struct {

0 commit comments

Comments
 (0)