github.com/argoproj/argo-cd/v3@v3.2.1/util/io/closer.go (about) 1 package io 2 3 import log "github.com/sirupsen/logrus" 4 5 var NopCloser = NewCloser(func() error { 6 return nil 7 }) 8 9 type Closer interface { 10 Close() error 11 } 12 13 type inlineCloser struct { 14 close func() error 15 } 16 17 func (c *inlineCloser) Close() error { 18 return c.close() 19 } 20 21 func NewCloser(closeFn func() error) Closer { 22 return &inlineCloser{close: closeFn} 23 } 24 25 // Close is a convenience function to close a object that has a Close() method, ignoring any errors 26 // Used to satisfy errcheck lint 27 func Close(c Closer) { 28 if err := c.Close(); err != nil { 29 log.Warnf("failed to close %v: %v", c, err) 30 } 31 }