Skip to content

Commit

Permalink
Add copy support for Wayland via wl-copy (#11964)
Browse files Browse the repository at this point in the history
* Add wl-copy support

* Add changeset

* set to patch

---------

Co-authored-by: Erika <3019731+Princesseuh@users.noreply.github.com>
  • Loading branch information
TheOtterlord and Princesseuh authored Sep 13, 2024
1 parent 490eed1 commit 06eff60
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
5 changes: 5 additions & 0 deletions .changeset/two-suns-admire.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Add wayland (wl-copy) support to `astro info`
34 changes: 22 additions & 12 deletions packages/astro/src/cli/info/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,25 +55,34 @@ export async function printInfo({ flags }: InfoOptions) {
}

async function copyToClipboard(text: string) {
text = text.trim()
const system = platform();
let command = '';
if (system === 'darwin') {
command = 'pbcopy';
} else if (system === 'win32') {
command = 'clip';
} else {
try {
// Unix: check if `xclip` is installed
const output = execSync('which xclip', { encoding: 'utf8' });
if (output[0] !== '/') {
// Did not find a path for xclip, bail out!
return;
// Unix: check if a supported command is installed
const unixCommands = [
['xclip', '-sel clipboard -l 1'],
['wl-copy', '"$0"']
]
for (const [unixCommand, args] of unixCommands) {
try {
const output = execSync(`which ${unixCommand}`, { encoding: 'utf8', stdio: 'pipe' });
if (output[0] !== '/') {
// Did not find a path. Skip!
continue;
}
command = `${unixCommand} ${args}`;
} catch {
// Failed to execute which. Skip!
continue;
}
command = 'xclip -sel clipboard -l 1';
} catch {
// Did not find xclip, bail out!
return;
}
// Did not find supported command. Bail out!
if (!command) return;
}

console.log();
Expand All @@ -86,8 +95,9 @@ async function copyToClipboard(text: string) {
if (!shouldCopy) return;

try {
execSync(command, {
input: text.trim(),
execSync(command.replaceAll('$0', text), {
stdio: 'ignore',
input: text,
encoding: 'utf8',
});
} catch {
Expand Down

0 comments on commit 06eff60

Please sign in to comment.