wireguard-client-wrapper
Version:
Crossplatform wrapper for wireguard client
34 lines (33 loc) • 874 B
JavaScript
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));
}
};
};