UNPKG

setup-cpp

Version:

Install all the tools required for building and testing C++/C projects.

57 lines 7.77 kB
import { execRoot } from "admina"; /** * Check if a package is already installed * @param pkg The package to check * @returns Whether the package is installed */ export async function checkPackageInstalled(pkg) { try { // First check if the package is installed at all const { exitCode } = await execRoot("apk", ["info", "-e", pkg.name], { reject: false, stdio: ["ignore", "pipe", "ignore"], }); if (exitCode !== 0) { return false; } // If no specific version is required, we're done if (pkg.version === undefined || pkg.version === "") { return true; } // Check the installed version const { stdout: versionOutput } = await execRoot("apk", ["info", "-v", pkg.name], { stdio: ["ignore", "pipe", "ignore"], }); // Parse the version from output (format is typically "package-name-version") const installedVersion = versionOutput.trim().split("-").slice(-1)[0]; return installedVersion === pkg.version; } catch (error) { return false; } } /** * Filter out packages that are already installed and qualify those that need installation * @param packages List of packages to check * @returns List of packages that need to be installed */ export async function filterAndQualifyApkPackages(packages) { const results = await Promise.all(packages.map(async (pack) => { const isInstalled = await checkPackageInstalled(pack); return isInstalled ? undefined : pack; })); return results.filter((pack) => pack !== undefined) .map(formatPackageWithVersion); } /** * Format a package with its version if specified * @param pkg The package object * @returns Formatted package string (name=version or just name) */ export function formatPackageWithVersion(pkg) { if (pkg.version !== undefined && pkg.version !== "") { return `${pkg.name}=${pkg.version}`; } return pkg.name; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhbGlmeS1pbnN0YWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3F1YWxpZnktaW5zdGFsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBbUJqQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxHQUFlO0lBQ3pELElBQUksQ0FBQztRQUNILGlEQUFpRDtRQUNqRCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkUsTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztTQUNwQyxDQUFDLENBQUE7UUFFRixJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFFRCxpREFBaUQ7UUFDakQsSUFBSSxHQUFHLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELDhCQUE4QjtRQUM5QixNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hGLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDO1NBQ3BDLENBQUMsQ0FBQTtRQUVGLDZFQUE2RTtRQUM3RSxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFckUsT0FBTyxnQkFBZ0IsS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFBO0lBQ3pDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUFDLFFBQXNCO0lBQ3RFLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDL0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDMUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyRCxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDdkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUVELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBc0IsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7U0FDcEUsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsR0FBZTtJQUN0RCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDcEQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3JDLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUE7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNSb290IH0gZnJvbSBcImFkbWluYVwiXG5cbi8qKlxuICogVGhlIGluZm9ybWF0aW9uIGFib3V0IGFuIGFwdCBwYWNrYWdlXG4gKi9cbmV4cG9ydCB0eXBlIEFwa1BhY2thZ2UgPSB7XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZSAqL1xuICBuYW1lOiBzdHJpbmdcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIChvcHRpb25hbCkgKi9cbiAgdmVyc2lvbj86IHN0cmluZ1xuICAvKiogVGhlIHJlcG9zaXRvcnkgdG8gYWRkIGJlZm9yZSBpbnN0YWxsaW5nIHRoZSBwYWNrYWdlIChvcHRpb25hbCkgKi9cbiAgcmVwb3NpdG9yeT86IHN0cmluZ1xuICAvKipcbiAgICogSWYgdGhlIGdpdmVuIHZlcnNpb24gaXMgbm90IGF2YWlsYWJsZSwgZmFsbCBiYWNrIHRvIHRoZSBsYXRlc3QgdmVyc2lvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZmFsbEJhY2tUb0xhdGVzdD86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHBhY2thZ2UgaXMgYWxyZWFkeSBpbnN0YWxsZWRcbiAqIEBwYXJhbSBwa2cgVGhlIHBhY2thZ2UgdG8gY2hlY2tcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja1BhY2thZ2VJbnN0YWxsZWQocGtnOiBBcGtQYWNrYWdlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkIGF0IGFsbFxuICAgIGNvbnN0IHsgZXhpdENvZGUgfSA9IGF3YWl0IGV4ZWNSb290KFwiYXBrXCIsIFtcImluZm9cIiwgXCItZVwiLCBwa2cubmFtZV0sIHtcbiAgICAgIHJlamVjdDogZmFsc2UsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcImlnbm9yZVwiXSxcbiAgICB9KVxuXG4gICAgaWYgKGV4aXRDb2RlICE9PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBJZiBubyBzcGVjaWZpYyB2ZXJzaW9uIGlzIHJlcXVpcmVkLCB3ZSdyZSBkb25lXG4gICAgaWYgKHBrZy52ZXJzaW9uID09PSB1bmRlZmluZWQgfHwgcGtnLnZlcnNpb24gPT09IFwiXCIpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgdGhlIGluc3RhbGxlZCB2ZXJzaW9uXG4gICAgY29uc3QgeyBzdGRvdXQ6IHZlcnNpb25PdXRwdXQgfSA9IGF3YWl0IGV4ZWNSb290KFwiYXBrXCIsIFtcImluZm9cIiwgXCItdlwiLCBwa2cubmFtZV0sIHtcbiAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwiaWdub3JlXCJdLFxuICAgIH0pXG5cbiAgICAvLyBQYXJzZSB0aGUgdmVyc2lvbiBmcm9tIG91dHB1dCAoZm9ybWF0IGlzIHR5cGljYWxseSBcInBhY2thZ2UtbmFtZS12ZXJzaW9uXCIpXG4gICAgY29uc3QgaW5zdGFsbGVkVmVyc2lvbiA9IHZlcnNpb25PdXRwdXQudHJpbSgpLnNwbGl0KFwiLVwiKS5zbGljZSgtMSlbMF1cblxuICAgIHJldHVybiBpbnN0YWxsZWRWZXJzaW9uID09PSBwa2cudmVyc2lvblxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogRmlsdGVyIG91dCBwYWNrYWdlcyB0aGF0IGFyZSBhbHJlYWR5IGluc3RhbGxlZCBhbmQgcXVhbGlmeSB0aG9zZSB0aGF0IG5lZWQgaW5zdGFsbGF0aW9uXG4gKiBAcGFyYW0gcGFja2FnZXMgTGlzdCBvZiBwYWNrYWdlcyB0byBjaGVja1xuICogQHJldHVybnMgTGlzdCBvZiBwYWNrYWdlcyB0aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaWx0ZXJBbmRRdWFsaWZ5QXBrUGFja2FnZXMocGFja2FnZXM6IEFwa1BhY2thZ2VbXSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHBhY2thZ2VzLm1hcChhc3luYyAocGFjaykgPT4ge1xuICAgICAgY29uc3QgaXNJbnN0YWxsZWQgPSBhd2FpdCBjaGVja1BhY2thZ2VJbnN0YWxsZWQocGFjaylcbiAgICAgIHJldHVybiBpc0luc3RhbGxlZCA/IHVuZGVmaW5lZCA6IHBhY2tcbiAgICB9KSxcbiAgKVxuXG4gIHJldHVybiByZXN1bHRzLmZpbHRlcigocGFjayk6IHBhY2sgaXMgQXBrUGFja2FnZSA9PiBwYWNrICE9PSB1bmRlZmluZWQpXG4gICAgLm1hcChmb3JtYXRQYWNrYWdlV2l0aFZlcnNpb24pXG59XG5cbi8qKlxuICogRm9ybWF0IGEgcGFja2FnZSB3aXRoIGl0cyB2ZXJzaW9uIGlmIHNwZWNpZmllZFxuICogQHBhcmFtIHBrZyBUaGUgcGFja2FnZSBvYmplY3RcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBwYWNrYWdlIHN0cmluZyAobmFtZT12ZXJzaW9uIG9yIGp1c3QgbmFtZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBhY2thZ2VXaXRoVmVyc2lvbihwa2c6IEFwa1BhY2thZ2UpOiBzdHJpbmcge1xuICBpZiAocGtnLnZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiBwa2cudmVyc2lvbiAhPT0gXCJcIikge1xuICAgIHJldHVybiBgJHtwa2cubmFtZX09JHtwa2cudmVyc2lvbn1gXG4gIH1cbiAgcmV0dXJuIHBrZy5uYW1lXG59XG4iXX0=