Simplify apkSorter using compare-func package (#788)

This commit is contained in:
Raphael von der Grün 2019-07-18 11:59:54 +02:00 committed by GitHub
parent ad742ec93c
commit b3b8690bbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 19 deletions

View File

@ -27,6 +27,7 @@ var spawn = require('cordova-common').superspawn.spawn;
var events = require('cordova-common').events; var events = require('cordova-common').events;
var CordovaError = require('cordova-common').CordovaError; var CordovaError = require('cordova-common').CordovaError;
var check_reqs = require('../check_reqs'); var check_reqs = require('../check_reqs');
const compareFunc = require('compare-func');
const MARKER = 'YOUR CHANGES WILL BE ERASED!'; const MARKER = 'YOUR CHANGES WILL BE ERASED!';
const SIGNING_PROPERTIES = '-signing.properties'; const SIGNING_PROPERTIES = '-signing.properties';
@ -300,27 +301,19 @@ class ProjectBuilder {
module.exports = ProjectBuilder; module.exports = ProjectBuilder;
function apkSorter (fileA, fileB) { const apkSorter = compareFunc([
const archSpecificRE = /-x86|-arm/; // Sort arch specific builds after generic ones
apkPath => /-x86|-arm/.test(apkPath),
const unsignedRE = /-unsigned/; // Sort unsigned builds after signed ones
apkPath => /-unsigned/.test(apkPath),
// De-prioritize arch-specific builds & unsigned builds // Sort by file modification time, latest first
const lower = (fileName) => { apkPath => -fs.statSync(apkPath).mtime.getTime(),
return archSpecificRE.exec(fileName)
? -2
: unsignedRE.exec(fileName)
? -1
: 0;
};
const lowerDiff = lower(fileB) - lower(fileA); // Sort by file name length, ascending
'length'
if (lowerDiff !== 0) return lowerDiff; ]);
var timeDiff = fs.statSync(fileB).mtime - fs.statSync(fileA).mtime;
return timeDiff === 0 ? fileA.length - fileB.length : timeDiff;
}
function findOutputApksHelper (dir, build_type, arch) { function findOutputApksHelper (dir, build_type, arch) {
var shellSilent = shell.config.silent; var shellSilent = shell.config.silent;

View File

@ -30,6 +30,7 @@
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"android-versions": "^1.3.0", "android-versions": "^1.3.0",
"compare-func": "^1.3.2",
"cordova-common": "^3.1.0", "cordova-common": "^3.1.0",
"nopt": "^4.0.1", "nopt": "^4.0.1",
"properties-parser": "^0.3.1", "properties-parser": "^0.3.1",

View File

@ -252,7 +252,7 @@ describe('ProjectBuilder', () => {
const fsSpy = jasmine.createSpyObj('fs', ['statSync']); const fsSpy = jasmine.createSpyObj('fs', ['statSync']);
fsSpy.statSync.and.callFake(filename => { fsSpy.statSync.and.callFake(filename => {
return { mtime: APKs[filename].getTime() }; return { mtime: APKs[filename] };
}); });
ProjectBuilder.__set__('fs', fsSpy); ProjectBuilder.__set__('fs', fsSpy);