diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2020-05-13 22:48:19 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-13 22:48:19 -0400 |
| commit | 892e28078137c3b2aba4cad85b94b17cd7835cd0 (patch) | |
| tree | 0497590bd2c8b9bb88ba4d638c469bf84e8bc396 /template.go | |
| parent | 4afac25c726d2796f84babc5e4b8115828c345d2 (diff) | |
| parent | 13c6ad18747753d691aab5b38357bbab66dcea97 (diff) | |
Merge pull request #841 from hairyhenderson/chmod-out-first
Apply --chmod before opening output file
Diffstat (limited to 'template.go')
| -rw-r--r-- | template.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/template.go b/template.go index 37e0c721..3559b5ca 100644 --- a/template.go +++ b/template.go @@ -243,13 +243,16 @@ func openOutFile(cfg *config.Config, filename string, mode os.FileMode, modeOver } func createOutFile(filename string, mode os.FileMode, modeOverride bool) (out io.WriteCloser, err error) { + if modeOverride { + err = fs.Chmod(filename, mode.Perm()) + if err != nil && !os.IsNotExist(err) { + return nil, fmt.Errorf("failed to chmod output file '%s' with mode %q: %w", filename, mode.Perm(), err) + } + } out, err = fs.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, mode.Perm()) if err != nil { return out, err } - if modeOverride { - err = fs.Chmod(filename, mode.Perm()) - } return out, err } |
