UNPKG

android-sdk-numic-plugin

Version:

Configures native Android installation to match installed SDK.

99 lines (95 loc) 3.32 kB
// index.ts import { execSync } from "node:child_process"; import { join as join2 } from "path"; // match-version.ts import semverSort from "semver-sort"; var findNewestBuildToolsVersion = (sdkManagerListOutput) => { const matches = [...sdkManagerListOutput.matchAll(/build-tools;(\d{1,3}\.\d{1,3}\.\d{1,10})/g)]; if (!matches || !Array.isArray(matches)) { return void 0; } const availableVersions = matches.map((match) => match[1]); const sortedVersions = semverSort.desc(availableVersions); return sortedVersions[0]; }; var getMajorFromVersion = (version) => { return parseInt(version.split(".")[0], 10); }; var matchVersion = (sdkManagerListOutput) => { const buildToolsVersion = findNewestBuildToolsVersion(sdkManagerListOutput); const majorSdkVersion = getMajorFromVersion(buildToolsVersion); return { buildToolsVersion, compileSdkVersion: majorSdkVersion, targetSdkVersion: majorSdkVersion }; }; // replace-versions.ts import { readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; var replaceVersions = ({ compileSdkVersion, targetSdkVersion, minSdkVersion, buildToolsVersion }, androidFolder) => { const buildGradlePath = join(androidFolder, "build.gradle"); let buildGradleContents = readFileSync(buildGradlePath, "utf-8"); if (buildToolsVersion) { buildGradleContents = buildGradleContents.replace( /(buildToolsVersion\s*=\s*")(\d{1,3}\.\d{1,3}\.\d{1,10})(")/, `$1${buildToolsVersion}$3` ); } if (minSdkVersion) { buildGradleContents = buildGradleContents.replace( /(minSdkVersion\s*=\s*)(\d{1,3})/, `$1${minSdkVersion}` ); } if (compileSdkVersion) { buildGradleContents = buildGradleContents.replace( /(compileSdkVersion\s*=\s*)(\d{1,3})/, `$1${compileSdkVersion}` ); } if (targetSdkVersion) { buildGradleContents = buildGradleContents.replace( /(targetSdkVersion\s*=\s*)(\d{1,3})/, `$1${targetSdkVersion}` ); } writeFileSync(buildGradlePath, buildGradleContents); }; // index.ts var android_sdk_numic_plugin_default = async ({ nativePath = process.cwd(), // eslint-disable-next-line no-console log = console.log, options = {} }) => { const androidFolder = join2(nativePath, "android"); const androidHome = execSync("echo $ANDROID_HOME").toString(); if (!androidHome) { log("Missing $ANDROID_HOME variable in PATH", "warning"); return; } let output; try { output = execSync("$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --list_installed", { stdio: "pipe" // Do not print errors. }).toString(); } catch (error) { log( "Failed to run sdkmanager, make sure to install and update the Android SDK Command-line Tools and make sure Android Studio is up-to-date", "warning" ); return; } const matchedInstalledVersions = matchVersion(output); options.buildToolsVersion ||= matchedInstalledVersions.buildToolsVersion ?? "35.0.0"; options.compileSdkVersion ||= matchedInstalledVersions.compileSdkVersion ?? 35; options.targetSdkVersion ||= matchedInstalledVersions.targetSdkVersion ?? 35; options.minSdkVersion ||= 24; replaceVersions(options, androidFolder); }; export { android_sdk_numic_plugin_default as default }; //# sourceMappingURL=index.js.map