setup-cpp
Version:
Install all the tools required for building and testing C++/C projects.
57 lines • 7.77 kB
JavaScript
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=