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  }