github.com/beauknowssoftware/makehcl@v0.0.0-20200322000747-1b9bb1e1c008/internal/file/safeStat.go (about)

     1  package file
     2  
     3  import (
     4  	"os"
     5  	"time"
     6  
     7  	"github.com/pkg/errors"
     8  )
     9  
    10  func SafeStat(filename string) (os.FileInfo, bool, error) {
    11  	s, err := os.Stat(filename)
    12  	if err != nil && os.IsNotExist(err) {
    13  		return s, false, nil
    14  	} else if err != nil {
    15  		return s, true, err
    16  	}
    17  
    18  	return s, true, nil
    19  }
    20  
    21  func Exists(filename string) (bool, error) {
    22  	_, exists, err := SafeStat(filename)
    23  	if err != nil {
    24  		return false, errors.Wrapf(err, "error stating file %v", filename)
    25  	}
    26  
    27  	return exists, nil
    28  }
    29  
    30  func ModTime(filename string) (*time.Time, error) {
    31  	s, exists, err := SafeStat(filename)
    32  	if err != nil {
    33  		return nil, errors.Wrapf(err, "error stating %v", filename)
    34  	} else if !exists {
    35  		return nil, nil
    36  	}
    37  
    38  	t := s.ModTime()
    39  
    40  	return &t, nil
    41  }