@electron-forge/core
Version:
A complete tool for building modern Electron applications
25 lines (20 loc) • 682 B
text/typescript
import { spawnSync } from 'node:child_process';
import { promisify } from 'node:util';
import sudoPrompt from '@vscode/sudo-prompt';
const which = async (
type: string,
prog: string,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
promise: () => Promise<any>,
): Promise<void> => {
if (spawnSync('which', [prog]).status === 0) {
await promise();
} else {
throw new Error(`${prog} is required to install ${type} packages`);
}
};
export const sudo = (type: string, prog: string, args: string): Promise<void> =>
which(type, prog, () =>
promisify(sudoPrompt.exec)(`${prog} ${args}`, { name: 'Electron Forge' }),
);
export default which;