aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShin'ya UEOKA <ueokande@i-beam.org>2019-09-27 09:11:33 +0000
committerShin'ya UEOKA <ueokande@i-beam.org>2019-09-27 09:11:33 +0000
commitffc20750e99ab2edbfc31748418dc5ecba69039e (patch)
tree6e83d8b1e5acc5a6e9c9e818d41ab6365d35b437
parentfff371ae6e7bb78c4c53adfe08751dc3a0bd7c10 (diff)
Support clipbard on MacOS
-rw-r--r--e2e/lib/clipboard.ts41
1 files changed, 41 insertions, 0 deletions
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<string> => {
});
};
+const readDarwin = (): Promise<string> => {
+ 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<string> => {
+ 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);
}