Files
AutoJs6/.utils/scrape-and-inject-android-studio-agp-version-map.mjs

39 lines
1.5 KiB
JavaScript

// scrape-and-inject-android-studio-agp-version-map.mjs
import { compareVersionStrings } from './utils/versioning.mjs';
import { fetchStudioAgpTable } from './fetch-and-parse-android-studio-agp-compatibility-table.mjs';
import { readPropertiesSync } from './utils/properties.mjs';
import { updateGradleMapData } from './utils/update-helper.mjs';
const props = readPropertiesSync();
const version = {
MIN_IDE: props.get('MIN_SUPPORTED_ANDROID_STUDIO_IDE_VERSION'),
MIN_AGP: props.get('MIN_SUPPORTED_ANDROID_STUDIO_AGP_VERSION'),
};
(async function main() {
const agpTable = await fetchStudioAgpTable();
const map = new Map();
for (const { studioVersion, agpRange } of agpTable) {
const targetStudioVersion = studioVersion.match(/\d{2,}\.\d+\.\d+/)?.[0];
if (!targetStudioVersion) continue;
const [ _, targetAgpVersion ] = agpRange.split('-');
if (!map.has(targetStudioVersion) || compareVersionStrings(map.get(targetStudioVersion), targetAgpVersion) > 0) {
map.set(targetStudioVersion, targetAgpVersion);
}
if (compareVersionStrings(targetStudioVersion, version.MIN_IDE) <= 0) break;
if (compareVersionStrings(targetAgpVersion, version.MIN_AGP) <= 0) break;
}
await updateGradleMapData('android-studio-agp-compat', map, {
label: 'Android Studio and AGP compatibility map',
sort: 'key.descending.as.version',
});
})().catch(err => {
console.error(err);
process.exitCode = 1;
});