From ffc20750e99ab2edbfc31748418dc5ecba69039e Mon Sep 17 00:00:00 2001 From: Shin'ya UEOKA Date: Fri, 27 Sep 2019 09:11:33 +0000 Subject: [PATCH] Support clipbard on MacOS --- e2e/lib/clipboard.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/e2e/lib/clipboard.ts b/e2e/lib/clipboard.ts index 13d95df..c1eddbb 100644 --- a/e2e/lib/clipboard.ts +++ b/e2e/lib/clipboard.ts @@ -37,6 +37,43 @@ const writeLinux = (data: string): Promise => { }); }; +const readDarwin = (): Promise => { + let stdout = '', stderr = ''; + return new Promise((resolve) => { + let pbpaste = spawn('pbpaste'); + pbpaste.stdout.on('data', (data) => { + stdout += data; + }); + pbpaste.stderr.on('data', (data) => { + stderr += data; + }); + pbpaste.on('close', (code) => { + if (code !== 0) { + throw new Error(`pbpaste returns ${code}: ${stderr}`) + } + resolve(stdout); + }); + }); +}; + +const writeDarwin = (data: string): Promise => { + let stderr = ''; + return new Promise((resolve) => { + let pbcopy = spawn('pbcopy'); + pbcopy.stderr.on('data', (data) => { + stderr += data; + }); + pbcopy.on('close', (code) => { + if (code !== 0) { + throw new Error(`pbcopy returns ${code}: ${stderr}`) + } + resolve(); + }); + pbcopy.stdin.write(data); + pbcopy.stdin.end(); + }); +}; + class UnsupportedError extends Error { constructor(platform: string) { super(); @@ -48,6 +85,8 @@ const read = () => { switch (process.platform) { case 'linux': return readLinux(); + case 'darwin': + return readDarwin(); } throw new UnsupportedError(process.platform); } @@ -56,6 +95,8 @@ const write = (data: string) => { switch (process.platform) { case 'linux': return writeLinux(data); + case 'darwin': + return writeDarwin(data); } throw new UnsupportedError(process.platform); }