You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import process from 'node:process';import {promisify} from 'node:util';import {execFile, execFileSync} from 'node:child_process';
const execFileAsync = promisify(execFile);
export async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) { if (process.platform !== 'darwin') { throw new Error('macOS only'); }
const outputArguments = humanReadableOutput ? [] : ['-ss'];
const execOptions = {}; if (signal) { execOptions.signal = signal; }
const {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions); return stdout.trim();}
export function runAppleScriptSync(script, {humanReadableOutput = true} = {}) { if (process.platform !== 'darwin') { throw new Error('macOS only'); }
const outputArguments = humanReadableOutput ? [] : ['-ss'];
const stdout = execFileSync('osascript', ['-e', script, ...outputArguments], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 500, });
return stdout.trim();}
|