package misc import ( "io" "os" "path/filepath" log "github.com/sirupsen/logrus" ) func CopyConfigTemplate(src, dst string) error { in, err := os.Open(src) if err != nil { return err } defer func() { if errClose := in.Close(); errClose != nil { log.WithError(errClose).Warn("failed to close source config file") } }() if err = os.MkdirAll(filepath.Dir(dst), 0o700); err != nil { return err } out, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0o600) if err != nil { return err } defer func() { if errClose := out.Close(); errClose != nil { log.WithError(errClose).Warn("failed to close destination config file") } }() if _, err = io.Copy(out, in); err != nil { return err } return out.Sync() }