github.com/catandhorse/git-lfs@v2.5.2+incompatible/tools/os_tools.go (about) 1 package tools 2 3 import ( 4 "bytes" 5 "fmt" 6 "os" 7 "strings" 8 9 "github.com/git-lfs/git-lfs/subprocess" 10 "github.com/pkg/errors" 11 ) 12 13 func Getwd() (dir string, err error) { 14 dir, err = os.Getwd() 15 if err != nil { 16 return 17 } 18 19 if isCygwin() { 20 dir, err = translateCygwinPath(dir) 21 if err != nil { 22 return "", errors.Wrap(err, "convert wd to cygwin") 23 } 24 } 25 26 return 27 } 28 29 func translateCygwinPath(path string) (string, error) { 30 cmd := subprocess.ExecCommand("cygpath", "-w", path) 31 buf := &bytes.Buffer{} 32 cmd.Stderr = buf 33 out, err := cmd.Output() 34 output := strings.TrimSpace(string(out)) 35 if err != nil { 36 return path, fmt.Errorf("Failed to translate path from cygwin to windows: %s", buf.String()) 37 } 38 return output, nil 39 } 40 41 func TranslateCygwinPath(path string) (string, error) { 42 if isCygwin() { 43 var err error 44 45 path, err = translateCygwinPath(path) 46 if err != nil { 47 return "", err 48 } 49 } 50 return path, nil 51 }