From 8d848dca4a52d169b3dfea2f66e7e5f69ee5e45c Mon Sep 17 00:00:00 2001 From: Lee James <40045512+leehagoodjames@users.noreply.github.com> Date: Thu, 7 Aug 2025 12:00:46 -0400 Subject: feat: open repo secrets page in addition to README (#5684) --- packages/cli/src/ui/utils/commandUtils.test.ts | 39 ++++++++++++++++++++++++++ packages/cli/src/ui/utils/commandUtils.ts | 26 ++++++++++++++++- 2 files changed, 64 insertions(+), 1 deletion(-) (limited to 'packages/cli/src/ui/utils') 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 => { const run = (cmd: string, args: string[]) => new Promise((resolve, reject) => { @@ -80,3 +80,27 @@ export const copyToClipboard = async (text: string): Promise => { 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; +}; -- cgit v1.2.3