index.js 910 B

1234567891011121314151617181920212223242526272829303132
  1. import process from 'node:process';
  2. import {promisify} from 'node:util';
  3. import {execFile, execFileSync} from 'node:child_process';
  4. const execFileAsync = promisify(execFile);
  5. export async function runAppleScript(script, {humanReadableOutput = true} = {}) {
  6. if (process.platform !== 'darwin') {
  7. throw new Error('macOS only');
  8. }
  9. const outputArguments = humanReadableOutput ? [] : ['-ss'];
  10. const {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);
  11. return stdout.trim();
  12. }
  13. export function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {
  14. if (process.platform !== 'darwin') {
  15. throw new Error('macOS only');
  16. }
  17. const outputArguments = humanReadableOutput ? [] : ['-ss'];
  18. const stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {
  19. encoding: 'utf8',
  20. stdio: ['ignore', 'pipe', 'ignore'],
  21. timeout: 500,
  22. });
  23. return stdout.trim();
  24. }