forked from reisxd/revanced-builder
-
Notifications
You must be signed in to change notification settings - Fork 54
/
PatchesParser.js
74 lines (59 loc) · 1.68 KB
/
PatchesParser.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const { readFileSync } = require('node:fs');
/**
* @param {string} packageName
* @param {boolean} hasRoot
*/
module.exports = async function parsePatch(packageName, hasRoot) {
const patchesList = JSON.parse(
readFileSync(global.jarNames.patchesList, 'utf8')
);
const rootedPatches = [
'microg-support',
'hide-cast-button',
'music-microg-support'
];
const patches = [];
global.versions = [];
global.jarNames.patch = {
integrations: false
};
for (const patch of patchesList) {
const isRooted = rootedPatches.includes(patch.name);
// Check if the patch is compatible:
let isCompatible = false;
/** @type {string} */
let compatibleVersion;
for (const pkg of patch.compatiblePackages)
if (pkg.name === packageName) {
isCompatible = true;
if (pkg.versions.length !== 0) {
compatibleVersion = pkg.versions.at(-1);
global.versions.push(compatibleVersion);
}
}
if (!isCompatible) {
if (patch.compatiblePackages.length !== 0) continue;
}
if (isRooted && !hasRoot) continue;
for (const dependencyName of patch.dependencies) {
if (dependencyName.includes('integrations')) {
global.jarNames.patch.integrations = true;
} else {
if (!global.jarNames.patch.integrations) {
global.jarNames.patch.integrations = false;
}
}
}
patches.push({
name: patch.name,
description: patch.description,
maxVersion: compatibleVersion || ' ',
isRooted,
excluded: patch.excluded || patch.deprecated
});
}
if (global.versions.length === 0) {
global.versions = 'NOREC';
}
return patches;
};