mirror of
https://github.com/apache/cordova-android.git
synced 2025-01-19 15:12:51 +08:00
Simplify apkSorter using compare-func package (#788)
This commit is contained in:
parent
ad742ec93c
commit
b3b8690bbd
@ -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;
|
||||||
|
@ -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",
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user