Files
AutoJs6/.utils/scrape-and-inject-java-gradle-compatibility-map.mjs

43 lines
1.4 KiB
JavaScript

// scrape-and-inject-java-gradle-compatibility-map.mjs
import { findTargetRows } from './utils/puppeteer-helpers.mjs';
import { getMinSupportedJavaVersionInt } from './utils/properties.mjs';
import { updateGradleMapData } from './utils/update-helper.mjs';
const URL = 'https://docs.gradle.org/current/userguide/compatibility.html#java_runtime';
(async function main() {
const rows = await findTargetRows({
url: URL,
tableSelector: 'table.tableblock',
tableFilter: {
caption: /java compatibility/i,
},
tableRowSelector: 'tbody tr',
tableDataSelector: 'td',
tableDataStructure: [
{ java: /^\d+$/ },
{ toolchain: /^N\/A$|\d+\.\d+/ },
{ gradle: /^N\/A$|\d+\.\d+/ },
],
});
const map = new Map();
const minSupportedJavaVersionInt = getMinSupportedJavaVersionInt();
for (const { java, gradle } of rows) {
const javaInt = parseInt(java);
if (Number.isNaN(javaInt)) {
throw Error(`Invalid java version int: "${java}"`);
}
if (javaInt >= minSupportedJavaVersionInt) {
map.set(`${javaInt}`, gradle);
}
}
await updateGradleMapData('java-gradle-compat', map, {
label: 'Java and Gradle compatibility map',
sort: 'key.descending.as.number',
});
})().catch(err => {
console.error(err);
process.exitCode = 1;
});