@@ -36236,7 +36236,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
36236
36236
return result;
36237
36237
};
36238
36238
Object.defineProperty(exports, "__esModule", { value: true });
36239
- exports.getBooleanInput = exports.getListInput = exports.splitByEOL = void 0;
36239
+ exports.getPackageCacheKey = exports. getBooleanInput = exports.getListInput = exports.splitByEOL = void 0;
36240
36240
const core = __importStar(__webpack_require__(470));
36241
36241
exports.splitByEOL = (stdout) => {
36242
36242
return stdout.split(/[\r\n]/);
@@ -36248,6 +36248,9 @@ exports.getListInput = (inputName) => {
36248
36248
exports.getBooleanInput = (inputName) => {
36249
36249
return (core.getInput(inputName) || "false").toUpperCase() === "TRUE";
36250
36250
};
36251
+ exports.getPackageCacheKey = (packageInfo) => {
36252
+ return `${packageInfo.name} ${packageInfo.remoteVersion}/1`;
36253
+ };
36251
36254
36252
36255
36253
36256
/***/ }),
@@ -42055,7 +42058,13 @@ class SDKManager {
42055
42058
this.sdkManagerPath = path_1.default.join(androidHome, "tools", "bin", "sdkmanager");
42056
42059
}
42057
42060
async install(packageInfo) {
42061
+ core.startGroup("Trying to download package via sdkmanager...");
42058
42062
await this.run([packageInfo.name], true);
42063
+ core.endGroup();
42064
+ if (!this.isPackageInstalled(packageInfo)) {
42065
+ const localPackagePath = this.getPackagePath(packageInfo);
42066
+ throw new Error(`Package '${packageInfo.name}' was not installed properly. '${localPackagePath}' folder is empty and doesn't exist`);
42067
+ }
42059
42068
}
42060
42069
async getAllPackagesInfo() {
42061
42070
const stdout = await this.run(["--list"], false);
@@ -47550,65 +47559,71 @@ const os = __importStar(__webpack_require__(87));
47550
47559
const sdk_manager_1 = __webpack_require__(857);
47551
47560
const utils_1 = __webpack_require__(611);
47552
47561
const patchUbuntuPermissions = async (androidHome) => {
47553
- core.info ("Patch permissions for $ANDROID_HOME on Ubuntu");
47562
+ core.startGroup ("Patch permissions for $ANDROID_HOME on Ubuntu");
47554
47563
await exec.exec("sudo", ["chmod", "-R", "a+rwx", androidHome]);
47564
+ core.endGroup();
47565
+ };
47566
+ const restoreCache = async (sdkmanager, foundPackage) => {
47567
+ core.startGroup("Trying to restore package from cache...");
47568
+ const cacheKey = utils_1.getPackageCacheKey(foundPackage);
47569
+ const localPackagePath = sdkmanager.getPackagePath(foundPackage);
47570
+ const cacheHitKey = await cache.restoreCache([localPackagePath], cacheKey);
47571
+ let cacheHit = Boolean(cacheHitKey);
47572
+ if (cacheHit && !sdkmanager.isPackageInstalled(foundPackage)) {
47573
+ core.debug(" [WARNING] Cache is invalid and contains empty folder. ");
47574
+ cacheHit = false;
47575
+ }
47576
+ core.endGroup();
47577
+ return cacheHit;
47578
+ };
47579
+ const saveCache = async (sdkmanager, packageInfo) => {
47580
+ core.startGroup("Saving package to cache...");
47581
+ const cacheKey = utils_1.getPackageCacheKey(packageInfo);
47582
+ const localPackagePath = sdkmanager.getPackagePath(packageInfo);
47583
+ await cache.saveCache([localPackagePath], cacheKey);
47584
+ core.endGroup();
47555
47585
};
47556
47586
const run = async () => {
47557
47587
try {
47588
+ const enableCache = utils_1.getBooleanInput("cache");
47589
+ const packages = utils_1.getListInput("packages");
47558
47590
const androidHome = process.env.ANDROID_HOME;
47559
47591
if (!androidHome) {
47560
47592
throw new Error("ANDROID_HOME env variable is not defined");
47561
47593
}
47594
+ const sdkmanager = new sdk_manager_1.SDKManager(androidHome);
47562
47595
if (os.platform() === "linux") {
47563
47596
await patchUbuntuPermissions(androidHome);
47564
47597
}
47565
- const sdkmanager = new sdk_manager_1.SDKManager(androidHome );
47598
+ core.startGroup("Getting list of available components" );
47566
47599
const allPackages = await sdkmanager.getAllPackagesInfo();
47567
- const enableCache = utils_1.getBooleanInput("cache");
47568
- const packages = utils_1.getListInput("packages");
47600
+ core.endGroup();
47569
47601
for (const packageName of packages) {
47570
47602
core.info(`Installing '${packageName}'...`);
47571
47603
const foundPackage = allPackages.find(p => p.name === packageName);
47572
47604
if (!foundPackage) {
47573
- throw new Error(`Package '${packageName}' is not available. Enable debug output for more details. `);
47605
+ throw new Error(`Package '${packageName}' is not available. Enable debug output for more details`);
47574
47606
}
47575
47607
if (foundPackage.installed && !foundPackage.update) {
47576
47608
core.info(` Package '${foundPackage.name}' is already installed and update is not required`);
47577
47609
continue;
47578
47610
}
47579
- const cacheKey = `${foundPackage.name} ${foundPackage.remoteVersion}/1`;
47580
- const localPackagePath = sdkmanager.getPackagePath(foundPackage);
47581
- let cacheHit = false;
47582
47611
if (enableCache) {
47583
- core.startGroup("Trying to restore package from cache...");
47584
- const cacheHitKey = await cache.restoreCache([localPackagePath], cacheKey );
47585
- cacheHit = Boolean(cacheHitKey) ;
47586
- if (cacheHit && !sdkmanager.isPackageInstalled(foundPackage)) {
47587
- core.debug(" [WARNING] Cache is invalid and contains empty folder. ");
47588
- cacheHit = false ;
47612
+ if (await restoreCache(sdkmanager, foundPackage)) {
47613
+ core.info(` Package '${foundPackage.name}' is restored from cache` );
47614
+ continue ;
47615
+ }
47616
+ else {
47617
+ core.info(" No cache found") ;
47589
47618
}
47590
- core.endGroup();
47591
- }
47592
- if (cacheHit) {
47593
- core.info(` Package '${foundPackage.name}' is restored from cache`);
47594
- continue;
47595
- }
47596
- else {
47597
- core.info(" No cache found");
47598
47619
}
47599
- core.startGroup("Trying to download package via sdkmanager...");
47600
47620
await sdkmanager.install(foundPackage);
47601
- core.endGroup();
47602
47621
core.info(` Package '${foundPackage.name}' is downloaded and installed`);
47603
- if (!sdkmanager.isPackageInstalled(foundPackage)) {
47604
- throw new Error(`Package '${packageName}' was not installed properly. '${localPackagePath}' folder is empty and doesn't exist`);
47605
- }
47606
47622
if (enableCache) {
47607
- core.startGroup("Saving package to cache...");
47608
- await cache.saveCache([localPackagePath], cacheKey);
47609
- core.endGroup();
47623
+ await saveCache(sdkmanager, foundPackage);
47610
47624
core.info(` Package '${foundPackage.name}' is saved to cache`);
47611
47625
}
47626
+ core.info("");
47612
47627
}
47613
47628
}
47614
47629
catch (error) {
0 commit comments