| import { quote } from './shellQuote.js' | |
| /** | |
| * Parses a shell prefix that may contain an executable path and arguments. | |
| * | |
| * Examples: | |
| * - "bash" -> quotes as 'bash' | |
| * - "/usr/bin/bash -c" -> quotes as '/usr/bin/bash' -c | |
| * - "C:\Program Files\Git\bin\bash.exe -c" -> quotes as 'C:\Program Files\Git\bin\bash.exe' -c | |
| * | |
| * @param prefix The shell prefix string containing executable and optional arguments | |
| * @param command The command to be executed | |
| * @returns The properly formatted command string with quoted components | |
| */ | |
| export function formatShellPrefixCommand( | |
| prefix: string, | |
| command: string, | |
| ): string { | |
| // Split on the last space before a dash to separate executable from arguments | |
| const spaceBeforeDash = prefix.lastIndexOf(' -') | |
| if (spaceBeforeDash > 0) { | |
| const execPath = prefix.substring(0, spaceBeforeDash) | |
| const args = prefix.substring(spaceBeforeDash + 1) | |
| return `${quote([execPath])} ${args} ${quote([command])}` | |
| } else { | |
| return `${quote([prefix])} ${quote([command])}` | |
| } | |
| } | |