2016-12-19 21:53:18 +00:00
|
|
|
package lfsapi
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
|
|
|
|
"github.com/bgentry/go-netrc/netrc"
|
|
|
|
)
|
|
|
|
|
|
|
|
type NetrcFinder interface {
|
|
|
|
FindMachine(string) *netrc.Machine
|
|
|
|
}
|
|
|
|
|
2017-09-29 17:45:52 +00:00
|
|
|
func ParseNetrc(osEnv Env) (NetrcFinder, string, error) {
|
2016-12-19 21:53:18 +00:00
|
|
|
home, _ := osEnv.Get("HOME")
|
|
|
|
if len(home) == 0 {
|
2017-09-29 17:45:52 +00:00
|
|
|
return &noFinder{}, "", nil
|
2016-12-19 21:53:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
nrcfilename := filepath.Join(home, netrcBasename)
|
|
|
|
if _, err := os.Stat(nrcfilename); err != nil {
|
2017-09-29 17:45:52 +00:00
|
|
|
return &noFinder{}, nrcfilename, nil
|
2016-12-19 21:53:18 +00:00
|
|
|
}
|
|
|
|
|
2017-09-29 17:45:52 +00:00
|
|
|
f, err := netrc.ParseFile(nrcfilename)
|
|
|
|
return f, nrcfilename, err
|
2016-12-19 21:53:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type noFinder struct{}
|
|
|
|
|
|
|
|
func (f *noFinder) FindMachine(host string) *netrc.Machine {
|
|
|
|
return nil
|
|
|
|
}
|