diff options
author | Ryooooooga <eial5q265e5@gmail.com> | 2021-10-12 22:18:17 +0900 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-10-16 22:40:50 +1100 |
commit | 4171b7613c9f935aa90e9a1fe70424e1a4bfd50e (patch) | |
tree | 7ee43e12843194a2ff3e769169df17cd11876884 /pkg/commands/oscommands | |
parent | 92f03a7872534657e0857cc72a51bdfca1fddb54 (diff) |
Use replacer
Diffstat (limited to 'pkg/commands/oscommands')
-rw-r--r-- | pkg/commands/oscommands/os.go | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/pkg/commands/oscommands/os.go b/pkg/commands/oscommands/os.go index b6181364f..4ab258512 100644 --- a/pkg/commands/oscommands/os.go +++ b/pkg/commands/oscommands/os.go @@ -202,13 +202,14 @@ func (c *OSCommand) ShellCommandFromString(commandStr string) *exec.Cmd { quotedCommand := "" // Windows does not seem to like quotes around the command if c.Platform.OS == "windows" { - quotedCommand = commandStr - quotedCommand = strings.Replace(quotedCommand, "^", "^^", -1) - quotedCommand = strings.Replace(quotedCommand, "&", "^&", -1) - quotedCommand = strings.Replace(quotedCommand, "|", "^|", -1) - quotedCommand = strings.Replace(quotedCommand, "<", "^<", -1) - quotedCommand = strings.Replace(quotedCommand, ">", "^>", -1) - quotedCommand = strings.Replace(quotedCommand, "%", "^%", -1) + quotedCommand = strings.NewReplacer( + "^", "^^", + "&", "^&", + "|", "^|", + "<", "^<", + ">", "^>", + "%", "^%", + ).Replace(commandStr) } else { quotedCommand = c.Quote(commandStr) } @@ -334,13 +335,17 @@ func (c *OSCommand) PrepareShellSubProcess(command string) *exec.Cmd { // Quote wraps a message in platform-specific quotation marks func (c *OSCommand) Quote(message string) string { if c.Platform.OS == "windows" { - message = strings.Replace(message, `"`, `"'"'"`, -1) - message = strings.Replace(message, `\"`, `\\"`, -1) + message = strings.NewReplacer( + `"`, `"'"'"`, + `\"`, `\\"`, + ).Replace(message) } else { - message = strings.Replace(message, `\`, `\\`, -1) - message = strings.Replace(message, `"`, `\"`, -1) - message = strings.Replace(message, "`", "\\`", -1) - message = strings.Replace(message, "$", "\\$", -1) + message = strings.NewReplacer( + `\`, `\\`, + `"`, `\"`, + `$`, `\$`, + "`", "\\`", + ).Replace(message) } escapedQuote := c.Platform.EscapedQuote return escapedQuote + message + escapedQuote |