summaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorRyooooooga <eial5q265e5@gmail.com>2021-10-12 22:18:17 +0900
committerJesse Duffield <jessedduffield@gmail.com>2021-10-16 22:40:50 +1100
commit4171b7613c9f935aa90e9a1fe70424e1a4bfd50e (patch)
tree7ee43e12843194a2ff3e769169df17cd11876884 /pkg
parent92f03a7872534657e0857cc72a51bdfca1fddb54 (diff)
Use replacer
Diffstat (limited to 'pkg')
-rw-r--r--pkg/commands/oscommands/os.go31
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