49 lines
1.8 KiB
JavaScript
49 lines
1.8 KiB
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.convert = void 0;
|
||
|
const child_process = require("child_process");
|
||
|
const fs = require("fs");
|
||
|
function convert(inFilename, outFilename, encoder, args = null) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
if (fs.existsSync(outFilename.toString()) && fs.statSync(outFilename.toString()).mtime.getTime() > fs.statSync(inFilename.toString()).mtime.getTime()) {
|
||
|
resolve(true);
|
||
|
return;
|
||
|
}
|
||
|
if (!encoder) {
|
||
|
resolve(false);
|
||
|
return;
|
||
|
}
|
||
|
let dirend = Math.max(encoder.lastIndexOf('/'), encoder.lastIndexOf('\\'));
|
||
|
let firstspace = encoder.indexOf(' ', dirend);
|
||
|
let exe = encoder.substr(0, firstspace);
|
||
|
let parts = encoder.substr(firstspace + 1).split(' ');
|
||
|
let options = [];
|
||
|
for (let i = 0; i < parts.length; ++i) {
|
||
|
let foundarg = false;
|
||
|
if (args !== null) {
|
||
|
for (let arg in args) {
|
||
|
if (parts[i] === '{' + arg + '}') {
|
||
|
options.push(args[arg]);
|
||
|
foundarg = true;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (foundarg)
|
||
|
continue;
|
||
|
if (parts[i] === '{in}')
|
||
|
options.push(inFilename.toString());
|
||
|
else if (parts[i] === '{out}')
|
||
|
options.push(outFilename.toString());
|
||
|
else
|
||
|
options.push(parts[i]);
|
||
|
}
|
||
|
// About stdio ignore: https://stackoverflow.com/a/20792428
|
||
|
let process = child_process.spawn(exe, options, { stdio: 'ignore' });
|
||
|
process.on('close', (code) => {
|
||
|
resolve(code === 0);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
exports.convert = convert;
|
||
|
//# sourceMappingURL=Converter.js.map
|