summaryrefslogtreecommitdiff
path: root/template.go
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2020-05-13 22:48:19 -0400
committerGitHub <noreply@github.com>2020-05-13 22:48:19 -0400
commit892e28078137c3b2aba4cad85b94b17cd7835cd0 (patch)
tree0497590bd2c8b9bb88ba4d638c469bf84e8bc396 /template.go
parent4afac25c726d2796f84babc5e4b8115828c345d2 (diff)
parent13c6ad18747753d691aab5b38357bbab66dcea97 (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.go9
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
}