From f99b54a7311677381df85270df2892584b7abb59 Mon Sep 17 00:00:00 2001 From: vilmibm Date: Mon, 13 Jul 2020 16:03:28 -0500 Subject: [PATCH] WIP: experimental bash support for windows --- command/root.go | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/command/root.go b/command/root.go index 7d26cfb88..92a933595 100644 --- a/command/root.go +++ b/command/root.go @@ -410,19 +410,27 @@ func ExpandAlias(args []string) (expanded []string, isShell bool, err error) { isShell = true expanded = []string{"sh", "-c", expansion[1:]} if runtime.GOOS == "windows" { - argList := "" - if len(args[2:]) > 0 { - argList = " -ArgumentList @(" - for i, arg := range args[2:] { - argList += fmt.Sprintf("'%s'", arg) - if i < len(args[2:])-1 { - argList += "," - } - } - argList += ")" + //argList := "" + //if len(args[2:]) > 0 { + // argList = " -ArgumentList @(" + // for i, arg := range args[2:] { + // argList += fmt.Sprintf("'%s'", arg) + // if i < len(args[2:])-1 { + // argList += "," + // } + // } + // argList += ")" + //} + //invoke := fmt.Sprintf("Invoke-Command -ScriptBlock { %s } %s", expansion[1:], argList) + //expanded = []string{"pwsh", "-Command", invoke} + executable, err := os.Executable() + if err != nil { + return } - invoke := fmt.Sprintf("Invoke-Command -ScriptBlock { %s } %s", expansion[1:], argList) - expanded = []string{"pwsh", "-Command", invoke} + invoke := fmt.Sprintf("gh () { %s \"$@\" }; %s", executable, expansion[1:]) + + expanded = []string{"bash", "--posix", "-c", invoke, "--"} + expanded = append(expanded, args[2:]...) } else { if len(args[2:]) > 0 { expanded = append(expanded, "--")