HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/self/root/usr/local/lib/node_modules/@ionic/cli/lib/integrations/cordova/project.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPackagePath = exports.getAndroidPackageFilePath = exports.getAndroidBuildOutputJson = exports.getPlatforms = void 0;
const tslib_1 = require("tslib");
const utils_array_1 = require("@ionic/utils-array");
const utils_fs_1 = require("@ionic/utils-fs");
const debug_1 = require("debug");
const path = tslib_1.__importStar(require("path"));
const guards_1 = require("../../../guards");
const color_1 = require("../../color");
const errors_1 = require("../../errors");
const debug = (0, debug_1.debug)('ionic:lib:cordova:project');
const CORDOVA_ANDROID_PACKAGE_PATH = 'platforms/android/app/build/outputs/apk/';
const CORDOVA_IOS_SIMULATOR_PACKAGE_PATH = 'platforms/ios/build/emulator';
const CORDOVA_IOS_DEVICE_PACKAGE_PATH = 'platforms/ios/build/device';
async function getPlatforms(projectDir) {
    const platformsDir = path.resolve(projectDir, 'platforms');
    const contents = await (0, utils_fs_1.readdirSafe)(platformsDir);
    const platforms = await (0, utils_array_1.filter)(contents, async (file) => {
        const stat = await (0, utils_fs_1.statSafe)(path.join(platformsDir, file));
        return !file.startsWith('.') && typeof stat !== 'undefined' && stat.isDirectory();
    });
    return platforms;
}
exports.getPlatforms = getPlatforms;
async function getAndroidBuildOutputJson(paths) {
    for (const p of paths) {
        try {
            const json = await (0, utils_fs_1.readJson)(p);
            if ((0, guards_1.isAndroidBuildOutputFile)(json)) {
                return json;
            }
            else if ((0, guards_1.isLegacyAndroidBuildOutputFile)(json)) {
                return json;
            }
            else {
                debug('Output file does not match expected format: %O', json);
            }
        }
        catch (e) {
            debug('Error parsing file %O: %O', p, e);
        }
    }
    throw new errors_1.FatalException(`Could not find or parse valid build output file.\n` +
        `Tried the following paths:\n` +
        `- ${paths.join('\n- ')}`);
}
exports.getAndroidBuildOutputJson = getAndroidBuildOutputJson;
async function getAndroidPackageFilePath(root, { release = false }) {
    const outputPath = path.resolve(root, CORDOVA_ANDROID_PACKAGE_PATH, release ? 'release' : 'debug');
    const outputJsonPaths = ['output.json', 'output-metadata.json'].map(p => path.resolve(outputPath, p));
    const outputJson = await getAndroidBuildOutputJson(outputJsonPaths);
    const p = 'elements' in outputJson
        ? outputJson.elements[0].outputFile
        : outputJson[0].path;
    // TODO: handle multiple files from output.json, prompt to select?
    return path.relative(root, path.resolve(outputPath, p));
}
exports.getAndroidPackageFilePath = getAndroidPackageFilePath;
/**
 * Get the relative path to most recently built APK or IPA file
 */
async function getPackagePath(root, appName, platform, { emulator = false, release = false } = {}) {
    if (platform === 'android') {
        return getAndroidPackageFilePath(root, { emulator, release });
    }
    else if (platform === 'ios') {
        if (emulator) {
            return path.join(CORDOVA_IOS_SIMULATOR_PACKAGE_PATH, `${appName}.app`);
        }
        return path.join(CORDOVA_IOS_DEVICE_PACKAGE_PATH, `${appName}.ipa`);
    }
    throw new errors_1.FatalException(`Unknown package path for ${(0, color_1.input)(appName)} on ${(0, color_1.input)(platform)}.`);
}
exports.getPackagePath = getPackagePath;