github.com/goreleaser/goreleaser@v1.25.1/internal/gio/safe.go (about) 1 package gio 2 3 import ( 4 "io" 5 "sync" 6 ) 7 8 // Safe wraps the given writer to be thread-safe. 9 func Safe(w io.Writer) io.Writer { 10 return &safeWriter{w: w} 11 } 12 13 type safeWriter struct { 14 w io.Writer 15 m sync.Mutex 16 } 17 18 func (s *safeWriter) Write(p []byte) (int, error) { 19 s.m.Lock() 20 defer s.m.Unlock() 21 return s.w.Write(p) 22 }