Skip to content

Commit edeb53e

Browse files
committed
Update dest file atomically
1 parent 63cf7d7 commit edeb53e

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

docker-gen.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/BurntSushi/toml"
88
"github.com/fsouza/go-dockerclient"
99
"io"
10+
"io/ioutil"
1011
"net"
1112
"net/http"
1213
"net/http/httputil"
@@ -145,9 +146,10 @@ func generateFile(config Config, containers []*RuntimeContainer) {
145146
tmpl = tmpl
146147
dest := os.Stdout
147148
if config.Dest != "" {
148-
dest, err = os.Create(config.Dest)
149+
dest, err = ioutil.TempFile("", "docker-gen")
150+
defer dest.Close()
149151
if err != nil {
150-
fmt.Println("unable to create dest file %s: %s\n", config.Dest, err)
152+
fmt.Println("unable to create temp file: %s\n", err)
151153
os.Exit(1)
152154
}
153155
}
@@ -156,6 +158,15 @@ func generateFile(config Config, containers []*RuntimeContainer) {
156158
if err != nil {
157159
fmt.Printf("template error: %s\n", err)
158160
}
161+
162+
if config.Dest != "" {
163+
err = os.Rename(dest.Name(), config.Dest)
164+
if err != nil {
165+
fmt.Println("unable to create dest file %s: %s\n", config.Dest, err)
166+
os.Exit(1)
167+
}
168+
}
169+
159170
}
160171

161172
func newConn() (*httputil.ClientConn, error) {

0 commit comments

Comments
 (0)