Files
Unify/framework/node_modules/node-gpp/child.js
2025-12-25 11:16:59 +01:00

142 lines
2.3 KiB
JavaScript

/*
Copyright (c) 2020, 2023, The Unified Company.
This code is part of Unify.
This program is free software; you can redistribute it and/or modify
it under the terms of the ESA Software Community License - Strong Copyleft,
https://unifyjs.org
*/
String.prototype.replaceAll = function replaceAll(search, replace) { return this.split(search).join(replace); }
var execPromises = new Array();
if( process.platform == "android" ) {
exports.gpp = class gpp{
convert( a ) {
return a;
}
}
} else {
var fs = require('fs');
var factory = require('./api_example.js');
var path = require('path');
const util = require('util');
const childProcess = require('child_process');
const { gpp } = require('./gpp.js');
var spawn = childProcess.spawn;
var batchSize = 70;
var gppInstance = new gpp();
exports.gpp = class gppManager{
getNumberOfDots( numberOfBatches ) {
if( numberOfBatches < 100 ){
return numberOfBatches;
} else {
return 100;
}
}
logConverter( coreNumber, inputFiles, numberOfBatches ) {
console.log( "Batches", numberOfBatches );
console.log( "Processing", inputFiles.length, "files" );
console.log( "Multicore support: processing batches with ", coreNumber, "cores." );
//console.log("[");
//process.stdout.moveCursor( numberOfDots + 2, -1);
//console.log("]");
console.log("");
}
async convert_files() {
var filesPath = path.resolve( "./framework/cache/platforms/files.json" );
var sourceRaw = await fs.readFileSync( filesPath, "utf8" )
var inputFiles = JSON.parse( sourceRaw );
var numberOfBatches = Math.floor( inputFiles.length / batchSize );
var totalFiles = batchSize * numberOfBatches + 1;
var os = require('os');
var readline = require('readline');
const coreNumber = os.cpus().length;
var numberOfDots = this.getNumberOfDots( numberOfBatches );
this.logConverter( coreNumber, inputFiles, numberOfBatches );
if( process.stdout.moveCursor ) {
for (var i = 0; i < numberOfBatches + 1; i++) {
gppInstance.convert( inputFiles, i );
process.stdout.moveCursor( Math.floor( (i * numberOfDots) / numberOfBatches ) , -1 );
console.log("·");
}
}
await Promise.all( gppInstance.execPromises );
console.log("Done.");
return true;
}
}
}