mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	refactor: move fallback to platform struct
Co-authored-by: Jesse Duffield <jessedduffield@gmail.com>
This commit is contained in:
		| @@ -17,11 +17,12 @@ import ( | ||||
|  | ||||
| // Platform stores the os state | ||||
| type Platform struct { | ||||
| 	os           string | ||||
| 	shell        string | ||||
| 	shellArg     string | ||||
| 	escapedQuote string | ||||
| 	openCommand  string | ||||
| 	os                   string | ||||
| 	shell                string | ||||
| 	shellArg             string | ||||
| 	escapedQuote         string | ||||
| 	openCommand          string | ||||
| 	fallbackEscapedQuote string | ||||
| } | ||||
|  | ||||
| // 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 | ||||
| func (c *OSCommand) Quote(message string) string { | ||||
| 	message = strings.Replace(message, "`", "\\`", -1) | ||||
| 	if c.Platform.os == "linux" { | ||||
| 		if strings.ContainsRune(message, '\'') { | ||||
| 			c.Platform.escapedQuote = `"` | ||||
| 		} else { | ||||
| 			c.Platform.escapedQuote = `'` | ||||
| 		} | ||||
| 	escapedQuote := c.Platform.escapedQuote | ||||
| 	if strings.Contains(message, c.Platform.escapedQuote) { | ||||
| 		escapedQuote = c.Platform.fallbackEscapedQuote | ||||
| 	} | ||||
| 	return c.Platform.escapedQuote + message + c.Platform.escapedQuote | ||||
| 	return escapedQuote + message + escapedQuote | ||||
| } | ||||
|  | ||||
| // Unquote removes wrapping quotations marks if they are present | ||||
|   | ||||
| @@ -8,10 +8,11 @@ import ( | ||||
|  | ||||
| func getPlatform() *Platform { | ||||
| 	return &Platform{ | ||||
| 		os:           runtime.GOOS, | ||||
| 		shell:        "bash", | ||||
| 		shellArg:     "-c", | ||||
| 		escapedQuote: "\"", | ||||
| 		openCommand:  "open {{filename}}", | ||||
| 		os:                   runtime.GOOS, | ||||
| 		shell:                "bash", | ||||
| 		shellArg:             "-c", | ||||
| 		escapedQuote:         "'", | ||||
| 		openCommand:          "open {{filename}}", | ||||
| 		fallbackEscapedQuote: "\"", | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -272,7 +272,7 @@ func TestOSCommandQuoteSingleQuote(t *testing.T) { | ||||
|  | ||||
| 	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) | ||||
| } | ||||
|   | ||||
| @@ -2,9 +2,10 @@ package commands | ||||
|  | ||||
| func getPlatform() *Platform { | ||||
| 	return &Platform{ | ||||
| 		os:           "windows", | ||||
| 		shell:        "cmd", | ||||
| 		shellArg:     "/c", | ||||
| 		escapedQuote: `\"`, | ||||
| 		os:                   "windows", | ||||
| 		shell:                "cmd", | ||||
| 		shellArg:             "/c", | ||||
| 		escapedQuote:         `\"`, | ||||
| 		fallbackEscapedQuote: "\\'", | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user