Welcome everyone 1. mynewt has over 100 same cmd files with this content @bash "%~dp0%~n0.sh"
2. pre_build_cmds pre_link_cmds post_link_cmds probably can't be used with .WINDOWS 3. go exec.Command and os.StartProcess will not run a file with the .sh extension at Windows 4. debug and load for all bsp need bash 5. /bin/sh is hardcoded for linux and darwin so that you can have a common script for post_build, I suggest that newt checks the extension of the command file and if it is .sh added bash.exe or for example the value of the variable NEWT_SH then you could also get rid of those 100 cmd files this is a change that executes the same script on Windows (when NEWT_SH is set to the path to bash.exe) and Linux, it also allows getting rid of .cmd files from bsp diff --git a/util/util.go b/util/util.go index ac92c28..c6a5638 100644 --- a/util/util.go +++ b/util/util.go @@ -369,8 +369,14 @@ func ShellCommandLimitDbgOutput( name = "/bin/sh" args = []string{"-c", strings.Replace(cmd, "\"", "\\\"", -1)} } else { - name = cmdStrs[0] - args = cmdStrs[1:] + var newt_sh = os.Getenv("NEWT_SH") + if newt_sh != "" && strings.HasSuffix(cmdStrs[0], ".sh") { + name = newt_sh + args = cmdStrs + } else { + name = cmdStrs[0] + args = cmdStrs[1:] + } } cmd := exec.Command(name, args...) @@ -428,6 +434,10 @@ func ShellInteractiveCommand(cmdStr []string, env map[string]string, // Escape special characters for Windows. fixupCmdArgs(cmdStr) + var newt_sh = os.Getenv("NEWT_SH") + if newt_sh != "" && strings.HasSuffix(cmdStr[0], ".sh") { + cmdStr = append([]string{newt_sh}, cmdStr...) + } log.Print("[VERBOSE] " + cmdStr[0]) c := make(chan os.Signal, 1) god luck ipan