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

Reply via email to