forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			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
 |