summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/utils
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/utils')
-rw-r--r--packages/cli/src/ui/utils/commandUtils.test.ts39
-rw-r--r--packages/cli/src/ui/utils/commandUtils.ts26
2 files changed, 64 insertions, 1 deletions
diff --git a/packages/cli/src/ui/utils/commandUtils.test.ts b/packages/cli/src/ui/utils/commandUtils.test.ts
index 4bd48cee..db333e72 100644
--- a/packages/cli/src/ui/utils/commandUtils.test.ts
+++ b/packages/cli/src/ui/utils/commandUtils.test.ts
@@ -11,6 +11,7 @@ import {
isAtCommand,
isSlashCommand,
copyToClipboard,
+ getUrlOpenCommand,
} from './commandUtils.js';
// Mock child_process
@@ -342,4 +343,42 @@ describe('commandUtils', () => {
});
});
});
+
+ describe('getUrlOpenCommand', () => {
+ describe('on macOS (darwin)', () => {
+ beforeEach(() => {
+ mockProcess.platform = 'darwin';
+ });
+ it('should return open', () => {
+ expect(getUrlOpenCommand()).toBe('open');
+ });
+ });
+
+ describe('on Windows (win32)', () => {
+ beforeEach(() => {
+ mockProcess.platform = 'win32';
+ });
+ it('should return start', () => {
+ expect(getUrlOpenCommand()).toBe('start');
+ });
+ });
+
+ describe('on Linux (linux)', () => {
+ beforeEach(() => {
+ mockProcess.platform = 'linux';
+ });
+ it('should return xdg-open', () => {
+ expect(getUrlOpenCommand()).toBe('xdg-open');
+ });
+ });
+
+ describe('on unmatched OS', () => {
+ beforeEach(() => {
+ mockProcess.platform = 'unmatched';
+ });
+ it('should return xdg-open', () => {
+ expect(getUrlOpenCommand()).toBe('xdg-open');
+ });
+ });
+ });
});
diff --git a/packages/cli/src/ui/utils/commandUtils.ts b/packages/cli/src/ui/utils/commandUtils.ts
index 4280388f..80ed51ae 100644
--- a/packages/cli/src/ui/utils/commandUtils.ts
+++ b/packages/cli/src/ui/utils/commandUtils.ts
@@ -27,7 +27,7 @@ export const isAtCommand = (query: string): boolean =>
*/
export const isSlashCommand = (query: string): boolean => query.startsWith('/');
-//Copies a string snippet to the clipboard for different platforms
+// Copies a string snippet to the clipboard for different platforms
export const copyToClipboard = async (text: string): Promise<void> => {
const run = (cmd: string, args: string[]) =>
new Promise<void>((resolve, reject) => {
@@ -80,3 +80,27 @@ export const copyToClipboard = async (text: string): Promise<void> => {
throw new Error(`Unsupported platform: ${process.platform}`);
}
};
+
+export const getUrlOpenCommand = (): string => {
+ // --- Determine the OS-specific command to open URLs ---
+ let openCmd: string;
+ switch (process.platform) {
+ case 'darwin':
+ openCmd = 'open';
+ break;
+ case 'win32':
+ openCmd = 'start';
+ break;
+ case 'linux':
+ openCmd = 'xdg-open';
+ break;
+ default:
+ // Default to xdg-open, which appears to be supported for the less popular operating systems.
+ openCmd = 'xdg-open';
+ console.warn(
+ `Unknown platform: ${process.platform}. Attempting to open URLs with: ${openCmd}.`,
+ );
+ break;
+ }
+ return openCmd;
+};