Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 85 additions & 91 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

const child_process = require('child_process');
const fs = require('fs');
const fsp = require('fs/promises');
const fse = require('fs-extra');
const https = require('follow-redirects').https;
const path = require('path');
const promisify = require('util').promisify;

const zip = require('gulp-zip');
const del = require('del');
Expand All @@ -17,7 +19,6 @@ const targz = require('targz');

const gulp = require('gulp');
const rollup = require('rollup');
const concat = require('gulp-concat');
const yarn = require("gulp-yarn");
const rename = require('gulp-rename');
const replace = require('gulp-replace');
Expand Down Expand Up @@ -64,6 +65,7 @@ let metadata = {};

let cordovaDependencies = true;

const decompress = promisify(targz.decompress);

//-----------------
//Pre tasks operations
Expand Down Expand Up @@ -95,12 +97,14 @@ gulp.task('test-cordova', cordova_browserify);

// Function definitions are processed before function calls.

function process_package_release(done) {
getGitRevision(done, processPackage, true);
async function process_package_release() {
const gitRevision = await getGitRevision();
return processPackage(gitRevision, true);
}

function process_package_debug(done) {
getGitRevision(done, processPackage, false);
async function process_package_debug() {
const gitRevision = await getGitRevision();
return processPackage(gitRevision, false);
}

// dist_yarn MUST be done after dist_src
Expand Down Expand Up @@ -279,7 +283,7 @@ function clean_cache() {
// Real work for dist task. Done in another task to call it via
// run-sequence.

function processPackage(done, gitRevision, isReleaseBuild) {
async function processPackage(gitRevision, isReleaseBuild) {
const metadataKeys = [ 'name', 'productName', 'description', 'author', 'license', 'version' ];

const pkg = require('./package.json');
Expand Down Expand Up @@ -336,9 +340,9 @@ function processPackage(done, gitRevision, isReleaseBuild) {

const platforms = getPlatforms();
if (platforms.indexOf('android') !== -1 && isReleaseBuild) {
gulp.series(version_prompt, write_package_file)(done);
return gulp.series(version_prompt, write_package_file)();
} else {
gulp.series(write_package_file)(done);
return gulp.series(write_package_file)();
}
}

Expand Down Expand Up @@ -439,11 +443,11 @@ function dist_rollup() {
}

// Create runable app directories in ./apps
function apps(done) {
function apps() {
const platforms = getPlatforms();
removeItem(platforms, 'android');

buildNWAppsWrapper(platforms, 'normal', APPS_DIR, done);
return buildNWAppsWrapper(platforms, 'normal', APPS_DIR);
}

function listPostBuildTasks(folder) {
Expand Down Expand Up @@ -498,38 +502,39 @@ function post_build(arch, folder, done) {
}

// Create debug app directories in ./debug
function debug(done) {
function debug() {
const platforms = getPlatforms();
removeItem(platforms, 'android');

buildNWAppsWrapper(platforms, 'sdk', DEBUG_DIR, done);
return buildNWAppsWrapper(platforms, 'sdk', DEBUG_DIR);
}

function injectARMCache(flavor, done) {
async function injectARMCache(flavor, done) {
const flavorPostfix = `-${flavor}`;
const flavorDownloadPostfix = flavor !== 'normal' ? `-${flavor}` : '';
clean_cache().then(function() {
if (!fs.existsSync('./cache')) {
fs.mkdirSync('./cache');
}
fs.closeSync(fs.openSync('./cache/_ARMv8_IS_CACHED', 'w'));
const versionFolder = `./cache/${nwBuilderOptions.version}${flavorPostfix}`;
if (!fs.existsSync(versionFolder)) {
fs.mkdirSync(versionFolder);
}
const linux32Folder = `${versionFolder}/linux32`;
if (!fs.existsSync(linux32Folder)) {
fs.mkdirSync(linux32Folder);
}
const downloadedArchivePath = `${versionFolder}/nwjs${flavorPostfix}-v${nwArmVersion}-linux-arm.tar.gz`;
const downloadUrl = `https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases/download/${nwArmVersion}/${nwArmVersion}.tar.gz`;
if (fs.existsSync(downloadedArchivePath)) {
console.log('Prebuilt ARMv8 binaries found in /tmp');
downloadDone(flavorDownloadPostfix, downloadedArchivePath, versionFolder);
} else {
console.log(`Downloading prebuilt ARMv8 binaries from "${downloadUrl}"...`);
process.stdout.write('> Starting download...\r');
const armBuildBinary = fs.createWriteStream(downloadedArchivePath);
await clean_cache();
if (!fs.existsSync('./cache')) {
fs.mkdirSync('./cache');
}
fs.closeSync(fs.openSync('./cache/_ARMv8_IS_CACHED', 'w'));
const versionFolder = `./cache/${nwBuilderOptions.version}${flavorPostfix}`;
if (!fs.existsSync(versionFolder)) {
fs.mkdirSync(versionFolder);
}
const linux32Folder = `${versionFolder}/linux32`;
if (!fs.existsSync(linux32Folder)) {
fs.mkdirSync(linux32Folder);
}
const downloadedArchivePath = `${versionFolder}/nwjs${flavorPostfix}-v${nwArmVersion}-linux-arm.tar.gz`;
const downloadUrl = `https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases/download/${nwArmVersion}/${nwArmVersion}.tar.gz`;
if (fs.existsSync(downloadedArchivePath)) {
console.log('Prebuilt ARMv8 binaries found in /tmp');
return nwArmReleaseDownloadDone(flavorDownloadPostfix, downloadedArchivePath, versionFolder);
} else {
console.log(`Downloading prebuilt ARMv8 binaries from "${downloadUrl}"...`);
process.stdout.write('> Starting download...\r');
const armBuildBinary = fs.createWriteStream(downloadedArchivePath);
return new Promise((resolve, reject) => {
https.get(downloadUrl, function(res) {
const totalBytes = res.headers['content-length'];
let downloadedBytes = 0;
Expand All @@ -540,45 +545,37 @@ function injectARMCache(flavor, done) {
});
armBuildBinary.on('finish', function() {
process.stdout.write('> 100% done \n');
armBuildBinary.close(function() {
downloadDone(flavorDownloadPostfix, downloadedArchivePath, versionFolder);
armBuildBinary.close(async function() {
await nwArmReleaseDownloadDone(flavorDownloadPostfix, downloadedArchivePath, versionFolder);
resolve();
});
});
});
}
});
});
}
}

function downloadDone(flavorDownload, downloadedArchivePath, versionFolder) {
console.log('Injecting prebuilt ARMv8 binaries into Linux32 cache...');
targz.decompress({
async function nwArmReleaseDownloadDone(flavorDownload, downloadedArchivePath, versionFolder) {
console.log('Injecting prebuilt ARMv8 binaries into Linux32 cache...');
try {
await decompress({
src: downloadedArchivePath,
dest: versionFolder,
}, function(err) {
if (err) {
console.log(err);
clean_debug();
process.exit(1);
} else {
fs.rename(
`${versionFolder}/nwjs${flavorDownload}-v${nwArmVersion}-linux-arm`,
`${versionFolder}/linux32`,
(renameErr) => {
if (renameErr) {
console.log(renameErr);
clean_debug();
process.exit(1);
}
done();
},
);
}
});
await fsp.rename(
`${versionFolder}/nwjs${flavorDownload}-v${nwArmVersion}-linux-arm`,
`${versionFolder}/linux32`,
);
} catch (error) {
console.log(err);
clean_debug();
process.exit(1);
}
}

function buildNWAppsWrapper(platforms, flavor, dir, done) {
async function buildNWAppsWrapper(platforms, flavor, dir) {
function buildNWAppsCallback() {
buildNWApps(platforms, flavor, dir, done);
buildNWApps(platforms, flavor, dir);
}

if (platforms.indexOf('armv8') !== -1) {
Expand All @@ -592,59 +589,56 @@ function buildNWAppsWrapper(platforms, flavor, dir, done) {

if (!fs.existsSync('./cache/_ARMv8_IS_CACHED', 'w')) {
console.log('Purging cache because it needs to be overwritten...');
clean_cache().then(() => {
injectARMCache(flavor, buildNWAppsCallback);
});
await clean_cache();
return injectARMCache(flavor, buildNWAppsCallback);
} else {
buildNWAppsCallback();
return buildNWAppsCallback();
}
} else {
if (platforms.indexOf('linux32') !== -1 && fs.existsSync('./cache/_ARMv8_IS_CACHED')) {
console.log('Purging cache because it was previously overwritten...');
clean_cache().then(buildNWAppsCallback);
await clean_cache();
return buildNWAppsCallback();
} else {
buildNWAppsCallback();
return buildNWAppsCallback();
}
}
}

function buildNWApps(platforms, flavor, dir, done) {
async function buildNWApps(platforms, flavor, dir) {
if (platforms.length > 0) {
const builder = new NwBuilder(Object.assign({
buildDir: dir,
platforms,
flavor,
}, nwBuilderOptions));
builder.on('log', console.log);
builder.build(function (err) {
if (err) {
try {
// `return await` to catch the error in this function
return await builder.build();
} catch (error) {
console.log(`Error building NW apps: ${err}`);
clean_debug();
process.exit(1);
}
done();
});
}
} else {
console.log('No platform suitable for NW Build');
done();
}
}

function getGitRevision(done, callback, isReleaseBuild) {
async function getGitRevision(done, callback, isReleaseBuild) {
let gitRevision = 'norevision';
git.diff([ '--shortstat' ], function (err1, diff) {
if (!err1 && !diff) {
git.log([ '-1', '--pretty=format:%h' ], function (err2, rev) {
if (!err2) {
gitRevision = rev.latest.hash;
}
try {
const diff = await git.diff(['--shortstat']);
if(!diff) {
const rev = await git.log(['-1', '--pretty=format:%h']);
gitRevision = rev.latest.hash;
}
} catch (error) {
console.log('norevision');
}

callback(done, gitRevision, isReleaseBuild);
});
} else {
callback(done, gitRevision, isReleaseBuild);
}
});
return gitRevision;
}

function start_debug(done) {
Expand Down Expand Up @@ -1067,9 +1061,9 @@ function cordova_browserify(done) {
const readFile = function(file) {
return new Promise(function(resolve) {
if (!file.includes("node_modules")) {
fs.readFile(file, 'utf8', async function (err,data) {
fs.readFile(file, 'utf8', function (err,data) {
if (data.match('require\\(.*\\)')) {
await cordova_execbrowserify(file);
cordova_execbrowserify(file);
}
resolve();
});
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@
"rollup-plugin-vue": "^5.*.*",
"rpm-builder": "^1.2.1",
"run-script-os": "^1.1.6",
"simple-git": "^3.10.0",
"simple-git": "^3.12.0",
"sinon": "^14.0.0",
"sinon-chai": "^3.7.0",
"targz": "^1.0.1",
Expand Down
2 changes: 1 addition & 1 deletion src/js/utils/css.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ export function getColorForPercentage(percentage, colorTableOverride = null) {
a: lower.color.a * percentageLower + upper.color.a * percentageUpper,
};
return `rgba(${[color.r, color.g, color.b, color.a].join(",")})`;
};
}
25 changes: 6 additions & 19 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4067,12 +4067,7 @@ base32-encode@^0.1.0:
resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-0.1.1.tgz#7510f6aa44e2c695b7efcb2673a454f8f8505ea0"
integrity sha512-jjc+6TC8PXrsxJ4CQr9ibioNhhAM1p/RvS9hy3Q+cxPphvXmLnFSkXoen2XXzNBrYjdmzajRtbFDl1x28F5F4A==

base64-js@^1.0.2, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==

base64-js@^1.3.1, base64-js@^1.5.1:
base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
Expand Down Expand Up @@ -12471,15 +12466,7 @@ please-upgrade-node@^3.2.0:
dependencies:
semver-compare "^1.0.0"

[email protected]:
version "3.0.5"
resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987"
integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==
dependencies:
base64-js "^1.5.1"
xmlbuilder "^9.0.7"

plist@^3.0.1:
[email protected], plist@^3.0.1:
version "3.0.5"
resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987"
integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==
Expand Down Expand Up @@ -14352,10 +14339,10 @@ simple-concat@^1.0.0:
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==

simple-git@^3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.10.0.tgz#f20031dd121d3c49e215ef0186a102bece3f89b2"
integrity sha512-2w35xrS5rVtAW0g67LqtxCZN5cdddz/woQRfS0OJXaljXEoTychZ4jnE+CQgra/wX4ZvHeiChTUMenCwfIYEYw==
simple-git@^3.12.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.12.0.tgz#12fa8e762d8d9629fb1c72a0e2b4e6ae5b1f11e8"
integrity sha512-cy1RSRFHGZSrlYa3MnUuNVOXLUdifEZD2X8+AZjg8mKCdRvtCFSga6acq5N2g0ggb8lH3jBi369MrFZ+Y6sfsA==
dependencies:
"@kwsites/file-exists" "^1.1.1"
"@kwsites/promise-deferred" "^1.1.1"
Expand Down