Skip to content

Commit acd9882

Browse files
committed
Tools: Add utils updating
1 parent 3eec6c7 commit acd9882

File tree

4 files changed

+90
-36
lines changed

4 files changed

+90
-36
lines changed

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@
1010
"url": "https://github.com/Mottie"
1111
},
1212
"devDependencies": {
13-
"eslint": "^7.31.0",
13+
"eslint": "^8.21.0",
1414
"github-reserved-names": "^2.0.4",
15-
"make-fetch-happen": "^9.0.4",
1615
"ver": "^6.0.2"
1716
},
1817
"scripts": {
1918
"authors": "bash tools/authors.sh",
2019
"build:reserved": "node tools/reserved-names.js",
21-
"build:mutations": "node tools/update-mutations.js",
20+
"build:requires": "node tools/update-requires.js",
2221
"lint": "npx eslint *.js",
2322
"test": "eslint *.js",
2423
"patch": "npm run lint && npx ver patch",

tools/get-mutation-version.js renamed to tools/update-mutation.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,28 @@
66
*/
77
"use strict";
88

9-
const fetch = require("make-fetch-happen");
10-
119
async function getVersion() {
1210
const response = await fetch("https://greasyfork.org/en/scripts/28721-mutations");
1311
const text = await response.text();
1412
const matches = text.match(/\?version=(\d+)/);
1513
return matches ? matches[1] : null;
1614
}
1715

18-
module.exports = getVersion;
16+
const regexp = /mutations.js\?version=\d+/;
17+
18+
const replace = (content, currentVersion) => {
19+
const replacement = `mutations.js?version=${currentVersion}`;
20+
if (!content.includes(replacement)) {
21+
return {
22+
content: content.replace(regexp, replacement),
23+
updated: true
24+
};
25+
}
26+
return {content, updated: false};
27+
};
28+
29+
module.exports = {
30+
getVersion,
31+
regexp,
32+
replace
33+
};

tools/update-mutations.js renamed to tools/update-requires.js

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,41 @@
22
"use strict";
33

44
const { getUserscriptsInFolder, readFile, writeFile } = require("./files");
5-
const getVersion = require("./get-mutation-version");
5+
const mutations = require("./update-mutation");
6+
const utils = require("./update-utils");
67
const getXrefs = require("./get-xrefs");
78

8-
const regexpMutations = /mutations.js\?version=\d+/;
9-
const regexpPatch = /(@version\s+)([\d.]+)/;
10-
const regexpName = /(@name\s+)([\w ]+)/;
11-
const today = (new Date()).toISOString().substring(0, 10).replace(/-/g, ".");
9+
let processes = [
10+
mutations,
11+
utils
12+
];
1213

14+
let usXref;
1315
const updatedList = [];
1416

15-
let currentVersion, usXref;
17+
const regexpPatch = /(@version\s+)([\d.]+)/;
18+
const regexpName = /(@name\s+)([\w ]+)/;
19+
const today = (new Date()).toISOString().substring(0, 10).replace(/-/g, ".");
1620

1721
function updateFile(name) {
1822
return new Promise((resolve, reject) => {
1923
readFile("./" + name)
2024
.then(data => {
21-
if (regexpMutations.test(data)) {
22-
let {content, updated} = updateMutationVersion(data);
23-
if (updated) {
24-
// Only update userscript patch if the mutation version was modified
25-
content = updatePatch(content);
26-
updatedList.push(content.match(regexpName)[2]);
25+
let wasUpdated = false;
26+
let content = data;
27+
processes.forEach(process => {
28+
if (process.regexp.test(content)) {
29+
const result = process.replace(content, process.version);
30+
if (result.updated) {
31+
content = result.content;
32+
wasUpdated = true;
33+
}
2734
}
35+
});
36+
if (wasUpdated) {
37+
// Only update userscript patch if the file version was modified
38+
content = updatePatch(content);
39+
updatedList.push(content.match(regexpName)[2]);
2840
return writeFile(name, content).then(resolve);
2941
}
3042
resolve();
@@ -36,16 +48,6 @@ function updateFile(name) {
3648
});
3749
}
3850

39-
function updateMutationVersion(content) {
40-
let updated = false;
41-
const replacement = `mutations.js?version=${currentVersion}`;
42-
if (content.indexOf(replacement) < 0) {
43-
updated = true;
44-
content = content.replace(regexpMutations, replacement);
45-
}
46-
return {content, updated};
47-
}
48-
4951
function updatePatch(data) {
5052
// @version x.x.0 => @version x.x.1
5153
let [major, minor, patch] = data.match(regexpPatch)[2].split(".");
@@ -87,7 +89,7 @@ function updateReadme() {
8789

8890
function processUserscripts(list) {
8991
return Promise.all(list.map(file => updateFile(file)))
90-
.then(() => console.log("\x1b[32m%s\x1b[0m", "Mutation URLs updated"))
92+
.then(() => console.log("\x1b[32m%s\x1b[0m", "Require URLs updated"))
9193
.then(updateReadme)
9294
.then(() => console.log("\x1b[32m%s\x1b[0m", "Readme updated"));
9395
}
@@ -99,10 +101,15 @@ function exit(err) {
99101
process.exit(err ? 1 : 0);
100102
}
101103

102-
Promise.all([ getUserscriptsInFolder(), getVersion(), getXrefs() ])
103-
.then(([list, version, xrefs]) => {
104-
currentVersion = version;
105-
usXref = xrefs;
106-
return processUserscripts(list);
107-
})
108-
.catch(exit);
104+
Promise.all([
105+
getUserscriptsInFolder(),
106+
getXrefs(),
107+
...processes.map(process => process.getVersion()),
108+
]).then(([list, xrefs, ...versions]) => {
109+
usXref = xrefs;
110+
processes = processes.map((process, index) => {
111+
process.version = versions[index];
112+
return process;
113+
});
114+
return processUserscripts(list);
115+
}).catch(exit);

tools/update-utils.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Return the value with the "version" value from
3+
* https://greasyfork.org/scripts/398877-utils-js/code/utilsjs.js?version=1079637
4+
* as seen on https://greasyfork.org/en/scripts/398877-utils-js page
5+
* => [ 1079637 ]
6+
*/
7+
"use strict";
8+
9+
async function getVersion() {
10+
const response = await fetch("https://greasyfork.org/en/scripts/398877-utils-js");
11+
const text = await response.text();
12+
const matches = text.match(/\?version=(\d+)/);
13+
return matches ? matches[1] : null;
14+
}
15+
16+
const regexp = /utilsjs.js\?version=\d+/;
17+
18+
const replace = (content, currentVersion) => {
19+
const replacement = `utilsjs.js?version=${currentVersion}`;
20+
if (!content.includes(replacement)) {
21+
return {
22+
content: content.replace(regexp, replacement),
23+
updated: true
24+
};
25+
}
26+
return {content, updated: false};
27+
}
28+
29+
module.exports = {
30+
getVersion,
31+
regexp,
32+
replace
33+
};

0 commit comments

Comments
 (0)