summaryrefslogtreecommitdiff
path: root/packages/core/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/utils')
-rw-r--r--packages/core/src/utils/editor.test.ts12
-rw-r--r--packages/core/src/utils/editor.ts14
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',