github.com/remind101/go-getter@v0.0.0-20180809191950-4bda8fa99001/get_file.go (about)

     1  package getter
     2  
     3  import (
     4  	"net/url"
     5  	"os"
     6  )
     7  
     8  // FileGetter is a Getter implementation that will download a module from
     9  // a file scheme.
    10  type FileGetter struct {
    11  	// Copy, if set to true, will copy data instead of using a symlink
    12  	Copy bool
    13  }
    14  
    15  func (g *FileGetter) ClientMode(u *url.URL) (ClientMode, error) {
    16  	path := u.Path
    17  	if u.RawPath != "" {
    18  		path = u.RawPath
    19  	}
    20  
    21  	fi, err := os.Stat(path)
    22  	if err != nil {
    23  		return 0, err
    24  	}
    25  
    26  	// Check if the source is a directory.
    27  	if fi.IsDir() {
    28  		return ClientModeDir, nil
    29  	}
    30  
    31  	return ClientModeFile, nil
    32  }