|
|
|
@ -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); |
|
|
|
|
} |
|
|
|
|