44 lines
1.7 KiB
JavaScript
44 lines
1.7 KiB
JavaScript
// scrape-android-studio-agp_version_maps.mjs
|
|
|
|
import { fetchStudioAgpTable } from './fetch-and-parse-android-studio-agp-compatibility-table.mjs';
|
|
import { readPropertiesSync } from './utils/properties.mjs';
|
|
import { compareVersionStrings } from './utils/versioning.mjs';
|
|
import { updateAnchoredMapInFile } from './utils/anchors.mjs';
|
|
|
|
const props = readPropertiesSync();
|
|
|
|
const version = {
|
|
MIN_IDE: props['MIN_SUPPORTED_ANDROID_STUDIO_IDE_VERSION'],
|
|
MIN_AGP: props['MIN_SUPPORTED_ANDROID_STUDIO_AGP_VERSION'],
|
|
};
|
|
|
|
(async function main() {
|
|
const agpTable = await fetchStudioAgpTable();
|
|
/** @type {{ [targetStudioVersion: string]: string }} */
|
|
const agpMap = {};
|
|
|
|
for (const { studioVersion, agpRange } of agpTable) {
|
|
const [ _, targetAgpVersion ] = agpRange.split('-');
|
|
const targetStudioVersion = studioVersion.match(/\d{2,}\.\d+\.\d/)?.[0];
|
|
if (!targetStudioVersion) continue;
|
|
if (targetStudioVersion in agpMap) {
|
|
if (compareVersionStrings(targetAgpVersion, agpMap[targetStudioVersion]) < 0) {
|
|
agpMap[targetStudioVersion] = targetAgpVersion;
|
|
}
|
|
} else {
|
|
agpMap[targetStudioVersion] = targetAgpVersion;
|
|
}
|
|
if (compareVersionStrings(targetStudioVersion, version.MIN_IDE) <= 0) break;
|
|
if (compareVersionStrings(targetAgpVersion, version.MIN_AGP) <= 0) break;
|
|
}
|
|
|
|
await updateAnchoredMapInFile('../settings.gradle.kts', {
|
|
anchorTag: 'ANDROID_STUDIO_AGP_VERSION_MAP',
|
|
mapName: 'agpVersionMap',
|
|
lines: Object.entries(agpMap).map(([ studioVer, agpVer ]) => `"${studioVer}" to "${agpVer}",`),
|
|
updatedLabel: 'AGP 版本映射',
|
|
});
|
|
})().catch(err => {
|
|
console.error(err);
|
|
process.exitCode = 1;
|
|
}); |