UNPKG

node-camera

Version:

This `gphoto2` wrapper for Node.js enables you to capture images, bursts, timelapses or even video.

44 lines (35 loc) 1.17 kB
import { Callbacks, CommandResult } from "./types"; const util = require("util"); const spawn = require("child_process").spawn; const exec = util.promisify(require("child_process").exec); export const execCommand = async (args: string[]) => { return new Promise<CommandResult>(async (resolve, reject) => { try { console.log(`gphoto2 ${args.join(" ")}`); const { stdout, stderr } = await exec(`gphoto2 ${args.join(" ")}`); if (!!stderr) { reject({ error: stderr }); } resolve({ data: stdout }); } catch (error) { reject({ error }); } }); }; export const spawnCommand = (args: string[], callbacks?: Callbacks) => { const command = spawn("gphoto2", args); command.stdout.on("data", (data: any) => { callbacks?.onData && callbacks?.onData(data); }); command.stderr.on("data", (error: any) => { callbacks?.onError && callbacks?.onError(error); }); command.on("close", (code: number) => { callbacks?.onClose && callbacks?.onClose(EXIT_CODES[code] || "UNKNOWN"); }); return command; }; const EXIT_CODES: any = { 0: "IMAGE_CAPTURE_FINISHED", 1: "IMAGE_CAPTURE_CANCELED" };