retroload
Version:
Command line utility for converting tape archive files of historical computers into sound for loading them on real devices
37 lines • 1.64 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { spawn, spawnSync } from 'child_process';
import { Logger } from 'retroload-lib';
import { PassThrough } from 'stream';
export function playerExists(command, args, regexp) {
const result = spawnSync(command, args);
if (result.error !== undefined) {
return false;
}
return Boolean(regexp.exec(result.stdout.toString()));
}
export function spawnPlayer(buffer, command, args) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
const proc = spawn(command, args);
proc.on('error', (e) => {
Logger.error(`Error: ${e.message}`);
reject(e);
});
proc.on('close', (_code) => {
resolve(null);
});
const stream = new PassThrough();
stream.end(buffer);
stream.pipe(proc.stdin);
});
});
}
//# sourceMappingURL=Utils.js.map