1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

refactor: move fallback to platform struct

Co-authored-by: Jesse Duffield <jessedduffield@gmail.com>
This commit is contained in:
Sascha Andres
2018-09-10 10:31:15 +02:00
parent 74144e3892
commit bb9698810d
4 changed files with 22 additions and 22 deletions

View File

@ -22,6 +22,7 @@ type Platform struct {
shellArg string shellArg string
escapedQuote string escapedQuote string
openCommand string openCommand string
fallbackEscapedQuote string
} }
// OSCommand holds all the os commands // OSCommand holds all the os commands
@ -140,14 +141,11 @@ func (c *OSCommand) PrepareSubProcess(cmdName string, commandArgs ...string) *ex
// Quote wraps a message in platform-specific quotation marks // Quote wraps a message in platform-specific quotation marks
func (c *OSCommand) Quote(message string) string { func (c *OSCommand) Quote(message string) string {
message = strings.Replace(message, "`", "\\`", -1) message = strings.Replace(message, "`", "\\`", -1)
if c.Platform.os == "linux" { escapedQuote := c.Platform.escapedQuote
if strings.ContainsRune(message, '\'') { if strings.Contains(message, c.Platform.escapedQuote) {
c.Platform.escapedQuote = `"` escapedQuote = c.Platform.fallbackEscapedQuote
} else {
c.Platform.escapedQuote = `'`
} }
} return escapedQuote + message + escapedQuote
return c.Platform.escapedQuote + message + c.Platform.escapedQuote
} }
// Unquote removes wrapping quotations marks if they are present // Unquote removes wrapping quotations marks if they are present

View File

@ -11,7 +11,8 @@ func getPlatform() *Platform {
os: runtime.GOOS, os: runtime.GOOS,
shell: "bash", shell: "bash",
shellArg: "-c", shellArg: "-c",
escapedQuote: "\"", escapedQuote: "'",
openCommand: "open {{filename}}", openCommand: "open {{filename}}",
fallbackEscapedQuote: "\"",
} }
} }

View File

@ -272,7 +272,7 @@ func TestOSCommandQuoteSingleQuote(t *testing.T) {
actual := osCommand.Quote("hello 'test'") actual := osCommand.Quote("hello 'test'")
expected := osCommand.Platform.escapedQuote + "hello 'test'" + osCommand.Platform.escapedQuote expected := osCommand.Platform.fallbackEscapedQuote + "hello 'test'" + osCommand.Platform.fallbackEscapedQuote
assert.EqualValues(t, expected, actual) assert.EqualValues(t, expected, actual)
} }

View File

@ -6,5 +6,6 @@ func getPlatform() *Platform {
shell: "cmd", shell: "cmd",
shellArg: "/c", shellArg: "/c",
escapedQuote: `\"`, escapedQuote: `\"`,
fallbackEscapedQuote: "\\'",
} }
} }