package getter import ( "net/url" "os" ) // FileGetter is a Getter implementation that will download a module from // a file scheme. type FileGetter struct { getter // Copy, if set to true, will copy data instead of using a symlink. If // false, attempts to symlink to speed up the operation and to lower the // disk space usage. If the symlink fails, may attempt to copy on windows. Copy bool } func (g *FileGetter) ClientMode(u *url.URL) (ClientMode, error) { path := u.Path if u.RawPath != "" { path = u.RawPath } fi, err := os.Stat(path) if err != nil { return 0, err } // Check if the source is a directory. if fi.IsDir() { return ClientModeDir, nil } return ClientModeFile, nil }