1
0
mirror of https://gitcode.com/github-mirrors/react-native-update-cli.git synced 2025-11-22 16:26:10 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee

Add hdiff

This commit is contained in:
sunnylqm
2021-04-07 22:09:48 +08:00
parent 32cafd92bf
commit 3d73b95140

View File

@@ -13,20 +13,11 @@ const { spawn, spawnSync } = require('child_process');
const g2js = require('gradle-to-js/lib/parser'); const g2js = require('gradle-to-js/lib/parser');
const os = require('os'); const os = require('os');
var diff; var bsdiff, hdiff, diff;
try { try {
var bsdiff = require('node-bsdiff'); bsdiff = require('node-bsdiff').diff;
diff = typeof bsdiff != 'function' ? bsdiff.diff : bsdiff; hdiff = require('node-hdiffpatch').diff;
} catch (e) { } catch (e) {}
diff = function () {
console.warn(
'This function needs "node-bsdiff". Please run "npm i node-bsdiff" from your project directory first!',
);
throw new Error(
'This function needs module "node-bsdiff". Please install it first.',
);
};
}
async function runReactNativeBundleCommand( async function runReactNativeBundleCommand(
bundleName, bundleName,
@@ -139,7 +130,7 @@ async function checkGradleConfig() {
return { return {
enableHermes, enableHermes,
crunchPngs, crunchPngs,
} };
} }
async function compileHermesByteCode(bundleName, outputFolder) { async function compileHermesByteCode(bundleName, outputFolder) {
@@ -482,6 +473,42 @@ function enumZipEntries(zipFn, callback) {
}); });
} }
function diffArgsCheck({ args, options, diffFn }) {
const [origin, next] = args;
if (!origin || !next) {
console.error(`Usage: pushy ${diffFn} <origin> <next>`);
process.exit(1);
}
if (diffFn.startsWith('hdiff')) {
if (!hdiff) {
console.error(
`This function needs "node-hdiffpatch".
Please run "npm i node-hdiffpatch" to install`,
);
process.exit(1);
}
diff = hdiff;
} else {
if (!bsdiff) {
console.error(
`This function needs "node-bsdiff".
Please run "npm i node-bsdiff" to install`,
);
process.exit(1);
}
diff = bsdiff;
}
const { output } = options;
return {
origin,
next,
realOutput: output.replace(/\$\{time\}/g, '' + Date.now()),
};
}
export const commands = { export const commands = {
bundle: async function ({ options }) { bundle: async function ({ options }) {
const platform = checkPlatform( const platform = checkPlatform(
@@ -535,30 +562,45 @@ export const commands = {
}, },
async diff({ args, options }) { async diff({ args, options }) {
const [origin, next] = args; const { origin, next, realOutput } = diffArgsCheck({ args, options, diff });
const { output } = options;
const realOutput = output.replace(/\$\{time\}/g, '' + Date.now()); await diffFromPPK(origin, next, realOutput, 'index.bundlejs');
console.log(`${realOutput} generated.`);
},
if (!origin || !next) { async hdiff({ args, options }) {
console.error('pushy diff <origin> <next>'); const { origin, next, realOutput } = diffArgsCheck({
process.exit(1); args,
} options,
hdiff,
});
await diffFromPPK(origin, next, realOutput, 'index.bundlejs'); await diffFromPPK(origin, next, realOutput, 'index.bundlejs');
console.log(`${realOutput} generated.`); console.log(`${realOutput} generated.`);
}, },
async diffFromApk({ args, options }) { async diffFromApk({ args, options }) {
const [origin, next] = args; const { origin, next, realOutput } = diffArgsCheck({
const { output } = options; args,
options,
diffFromApk,
});
const realOutput = output.replace(/\$\{time\}/g, '' + Date.now()); await diffFromPackage(
origin,
next,
realOutput,
'assets/index.android.bundle',
);
console.log(`${realOutput} generated.`);
},
if (!origin || !next) { async hdiffFromApk({ args, options }) {
console.error('pushy diffFromApk <origin> <next>'); const { origin, next, realOutput } = diffArgsCheck({
process.exit(1); args,
} options,
hdiffFromApk,
});
await diffFromPackage( await diffFromPackage(
origin, origin,
@@ -570,15 +612,26 @@ export const commands = {
}, },
async diffFromIpa({ args, options }) { async diffFromIpa({ args, options }) {
const [origin, next] = args; const { origin, next, realOutput } = diffArgsCheck({
const { output } = options; args,
options,
diffFromIpa,
});
const realOutput = output.replace(/\$\{time\}/g, '' + Date.now()); await diffFromPackage(origin, next, realOutput, 'main.jsbundle', (v) => {
const m = /^Payload\/[^/]+\/(.+)$/.exec(v);
return m && m[1];
});
if (!origin || !next) { console.log(`${realOutput} generated.`);
console.error('pushy diffFromIpa <origin> <next>'); },
process.exit(1);
} async hdiffFromIpa({ args, options }) {
const { origin, next, realOutput } = diffArgsCheck({
args,
options,
hdiffFromIpa,
});
await diffFromPackage(origin, next, realOutput, 'main.jsbundle', (v) => { await diffFromPackage(origin, next, realOutput, 'main.jsbundle', (v) => {
const m = /^Payload\/[^/]+\/(.+)$/.exec(v); const m = /^Payload\/[^/]+\/(.+)$/.exec(v);