/** Command-line helpers shared by the terminal and External Tools. */ /** Splits a command line (`/bin/zsh --login`, `-c "a b"`) into words, honouring quotes. */ export function splitCommandLine(line: string): string[] { const out: string[] = []; let cur = ""; let quote: string | null = null; let has = false; for (let i = 0; i < line.length; i++) { const c = line[i]!; if (quote) { if (c === quote) quote = null; else if (c === "\\" && quote === '"' && i + 1 < line.length) cur += line[++i]; else cur += c; } else if (c === '"' || c === "'") { quote = c; has = true; } else if (c === "\\" && i + 1 < line.length) { cur += line[++i]; has = true; } else if (/\s/.test(c)) { if (has || cur) out.push(cur); cur = ""; has = false; } else cur += c; } if (has || cur) out.push(cur); return out; }