UNPKG

wireguard-client-wrapper

Version:
34 lines (33 loc) 874 B
import child from 'child_process'; import sudo from 'sudo-prompt'; export class ExecError extends Error { error; stdout; stderr; constructor(error, stdout, stderr) { super(error.message); this.error = error; this.stdout = stdout; this.stderr = stderr; } } export async function run(command, name, sudoPrompt = true) { return new Promise((resolve, reject) => { if (sudoPrompt) { sudo.exec(command, { name }, execCallback(resolve, reject)); } else { child.exec(command, execCallback(resolve, reject)); } }); } const execCallback = (resolve, reject) => { return (error, stdout, stderr) => { if (!error) { resolve({ stdout, stderr }); } else { reject(new ExecError(error, stdout, stderr)); } }; };