fix(copyCommand): provide friendlier error messages for /copy command (#6723)

Co-authored-by: Ben Guo <hundunben@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Jacob Richman <jacob314@gmail.com>
This commit is contained in:
Ben Guo
2025-08-23 00:58:35 +08:00
committed by GitHub
parent c4a788b7b2
commit 9c1490e985
5 changed files with 114 additions and 16 deletions

View File

@@ -74,16 +74,35 @@ export const copyToClipboard = async (text: string): Promise<void> => {
// If xclip fails for any reason, try xsel as a fallback.
await run('xsel', ['--clipboard', '--input'], linuxOptions);
} catch (fallbackError) {
const primaryMsg =
const xclipNotFound =
primaryError instanceof Error &&
(primaryError as NodeJS.ErrnoException).code === 'ENOENT';
const xselNotFound =
fallbackError instanceof Error &&
(fallbackError as NodeJS.ErrnoException).code === 'ENOENT';
if (xclipNotFound && xselNotFound) {
throw new Error(
'Please ensure xclip or xsel is installed and configured.',
);
}
let primaryMsg =
primaryError instanceof Error
? primaryError.message
: String(primaryError);
const fallbackMsg =
if (xclipNotFound) {
primaryMsg = `xclip not found`;
}
let fallbackMsg =
fallbackError instanceof Error
? fallbackError.message
: String(fallbackError);
if (xselNotFound) {
fallbackMsg = `xsel not found`;
}
throw new Error(
`All copy commands failed. xclip: "${primaryMsg}", xsel: "${fallbackMsg}". Please ensure xclip or xsel is installed and configured.`,
`All copy commands failed. "${primaryMsg}", "${fallbackMsg}". `,
);
}
}