diff options
Diffstat (limited to 'packages/core/src/utils')
| -rw-r--r-- | packages/core/src/utils/editor.test.ts | 12 | ||||
| -rw-r--r-- | packages/core/src/utils/editor.ts | 14 |
2 files changed, 21 insertions, 5 deletions
diff --git a/packages/core/src/utils/editor.test.ts b/packages/core/src/utils/editor.test.ts index 74237c74..20917c0f 100644 --- a/packages/core/src/utils/editor.test.ts +++ b/packages/core/src/utils/editor.test.ts @@ -21,7 +21,11 @@ describe('checkHasEditor', () => { it('should return true for vscode if "code" command exists', () => { (execSync as Mock).mockReturnValue(Buffer.from('/usr/bin/code')); expect(checkHasEditor('vscode')).toBe(true); - expect(execSync).toHaveBeenCalledWith('which code', { stdio: 'ignore' }); + const expectedCommand = + process.platform === 'win32' ? 'where.exe code.cmd' : 'command -v code'; + expect(execSync).toHaveBeenCalledWith(expectedCommand, { + stdio: 'ignore', + }); }); it('should return false for vscode if "code" command does not exist', () => { @@ -34,7 +38,11 @@ describe('checkHasEditor', () => { it('should return true for vim if "vim" command exists', () => { (execSync as Mock).mockReturnValue(Buffer.from('/usr/bin/vim')); expect(checkHasEditor('vim')).toBe(true); - expect(execSync).toHaveBeenCalledWith('which vim', { stdio: 'ignore' }); + const expectedCommand = + process.platform === 'win32' ? 'where.exe vim' : 'command -v vim'; + expect(execSync).toHaveBeenCalledWith(expectedCommand, { + stdio: 'ignore', + }); }); it('should return false for vim if "vim" command does not exist', () => { diff --git a/packages/core/src/utils/editor.ts b/packages/core/src/utils/editor.ts index 447aa0d2..6be5cffb 100644 --- a/packages/core/src/utils/editor.ts +++ b/packages/core/src/utils/editor.ts @@ -15,7 +15,10 @@ interface DiffCommand { function commandExists(cmd: string): boolean { try { - execSync(`which ${cmd}`, { stdio: 'ignore' }); + execSync( + process.platform === 'win32' ? `where.exe ${cmd}` : `command -v ${cmd}`, + { stdio: 'ignore' }, + ); return true; } catch { return false; @@ -24,7 +27,9 @@ function commandExists(cmd: string): boolean { export function checkHasEditor(editor: EditorType): boolean { if (editor === 'vscode') { - return commandExists('code'); + return process.platform === 'win32' + ? commandExists('code.cmd') + : commandExists('code'); } else if (editor === 'vim') { return commandExists('vim'); } @@ -116,7 +121,10 @@ export async function openDiff( }); } else { // Use execSync for terminal-based editors like vim - const command = `${diffCommand.command} ${diffCommand.args.map((arg) => `"${arg}"`).join(' ')}`; + const command = + process.platform === 'win32' + ? `${diffCommand.command} ${diffCommand.args.join(' ')}` + : `${diffCommand.command} ${diffCommand.args.map((arg) => `"${arg}"`).join(' ')}`; execSync(command, { stdio: 'inherit', encoding: 'utf8', |
