github.com/git-lfs/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  }