| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- 'use strict';
 
- const path = require('path');
 
- const execa = require('execa');
 
- const xsel = 'xsel';
 
- const xselFallback = path.join(__dirname, '../fallbacks/linux/xsel');
 
- const copyArguments = ['--clipboard', '--input'];
 
- const pasteArguments = ['--clipboard', '--output'];
 
- const makeError = (xselError, fallbackError) => {
 
- 	let error;
 
- 	if (xselError.code === 'ENOENT') {
 
- 		error = new Error('Couldn\'t find the `xsel` binary and fallback didn\'t work. On Debian/Ubuntu you can install xsel with: sudo apt install xsel');
 
- 	} else {
 
- 		error = new Error('Both xsel and fallback failed');
 
- 		error.xselError = xselError;
 
- 	}
 
- 	error.fallbackError = fallbackError;
 
- 	return error;
 
- };
 
- const xselWithFallback = async (argumentList, options) => {
 
- 	try {
 
- 		return await execa.stdout(xsel, argumentList, options);
 
- 	} catch (xselError) {
 
- 		try {
 
- 			return await execa.stdout(xselFallback, argumentList, options);
 
- 		} catch (fallbackError) {
 
- 			throw makeError(xselError, fallbackError);
 
- 		}
 
- 	}
 
- };
 
- const xselWithFallbackSync = (argumentList, options) => {
 
- 	try {
 
- 		return execa.sync(xsel, argumentList, options);
 
- 	} catch (xselError) {
 
- 		try {
 
- 			return execa.sync(xselFallback, argumentList, options);
 
- 		} catch (fallbackError) {
 
- 			throw makeError(xselError, fallbackError);
 
- 		}
 
- 	}
 
- };
 
- module.exports = {
 
- 	copy: async options => {
 
- 		await xselWithFallback(copyArguments, options);
 
- 	},
 
- 	copySync: options => {
 
- 		xselWithFallbackSync(copyArguments, options);
 
- 	},
 
- 	paste: options => xselWithFallback(pasteArguments, options),
 
- 	pasteSync: options => xselWithFallbackSync(pasteArguments, options)
 
- };
 
 
  |