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  }