setup-cpp
Version:
Install all the tools required for building and testing C++/C projects.
53 lines • 6.52 kB
JavaScript
import { info } from "ci-log";
import { appendFile, readFile } from "fs/promises";
import { pathExists } from "path-exists";
import { hasApk } from "./has-apk.js";
import { updateApkMemoized } from "./update.js";
/**
* Add an APK repository
* @param repoUrl The URL of the repository to add
* @returns Whether the repository was added successfully
*/
export async function addApkRepository(repoUrl) {
if (!(await hasApk())) {
throw new Error("apk is not available on this system");
}
try {
// Check if repositories file exists
const reposFile = "/etc/apk/repositories";
if (!(await pathExists(reposFile))) {
throw new Error(`APK repositories file not found at ${reposFile}`);
}
// Add repository to the file
info(`Adding repository: ${repoUrl}`);
await appendFile(reposFile, `${repoUrl}\n`);
// Update package index after adding repository
await updateApkMemoized.clear();
await updateApkMemoized();
info(`Successfully added repository: ${repoUrl}`);
return true;
}
catch (error) {
throw new Error(`Failed to add repository ${repoUrl}: ${error}`);
}
}
/**
* Enable the community repository
* @returns Whether the repository was added successfully
*/
export async function enableCommunityRepository() {
const alpineVersion = (await getAlpineVersion()).split(".").slice(0, 2).join(".");
return addApkRepository(`https://dl-cdn.alpinelinux.org/alpine/v${alpineVersion}/community/`);
}
/**
* Get the Alpine version
* @returns The Alpine version
*/
export async function getAlpineVersion() {
const releaseFile = "/etc/alpine-release";
if (!(await pathExists(releaseFile))) {
throw new Error(`Alpine release file not found at ${releaseFile}`);
}
return readFile(releaseFile, "utf8");
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBrLXJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXBrLXJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRS9DOzs7O0dBSUc7QUFFSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLE9BQWU7SUFDcEQsSUFBSSxDQUFDLENBQUMsTUFBTSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxvQ0FBb0M7UUFDcEMsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUE7UUFDekMsSUFBSSxDQUFDLENBQUMsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDcEUsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLENBQUMsc0JBQXNCLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDckMsTUFBTSxVQUFVLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQTtRQUUzQywrQ0FBK0M7UUFDL0MsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUMvQixNQUFNLGlCQUFpQixFQUFFLENBQUE7UUFFekIsSUFBSSxDQUFDLGtDQUFrQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ2pELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixPQUFPLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUseUJBQXlCO0lBQzdDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRWpGLE9BQU8sZ0JBQWdCLENBQUMsMENBQTBDLGFBQWEsYUFBYSxDQUFDLENBQUE7QUFDL0YsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLHFCQUFxQixDQUFBO0lBQ3pDLElBQUksQ0FBQyxDQUFDLE1BQU0sVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluZm8gfSBmcm9tIFwiY2ktbG9nXCJcbmltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCJcbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tIFwicGF0aC1leGlzdHNcIlxuaW1wb3J0IHsgaGFzQXBrIH0gZnJvbSBcIi4vaGFzLWFway5qc1wiXG5pbXBvcnQgeyB1cGRhdGVBcGtNZW1vaXplZCB9IGZyb20gXCIuL3VwZGF0ZS5qc1wiXG5cbi8qKlxuICogQWRkIGFuIEFQSyByZXBvc2l0b3J5XG4gKiBAcGFyYW0gcmVwb1VybCBUaGUgVVJMIG9mIHRoZSByZXBvc2l0b3J5IHRvIGFkZFxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVwb3NpdG9yeSB3YXMgYWRkZWQgc3VjY2Vzc2Z1bGx5XG4gKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFkZEFwa1JlcG9zaXRvcnkocmVwb1VybDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmICghKGF3YWl0IGhhc0FwaygpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImFwayBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtXCIpXG4gIH1cblxuICB0cnkge1xuICAgIC8vIENoZWNrIGlmIHJlcG9zaXRvcmllcyBmaWxlIGV4aXN0c1xuICAgIGNvbnN0IHJlcG9zRmlsZSA9IFwiL2V0Yy9hcGsvcmVwb3NpdG9yaWVzXCJcbiAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHJlcG9zRmlsZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFQSyByZXBvc2l0b3JpZXMgZmlsZSBub3QgZm91bmQgYXQgJHtyZXBvc0ZpbGV9YClcbiAgICB9XG5cbiAgICAvLyBBZGQgcmVwb3NpdG9yeSB0byB0aGUgZmlsZVxuICAgIGluZm8oYEFkZGluZyByZXBvc2l0b3J5OiAke3JlcG9Vcmx9YClcbiAgICBhd2FpdCBhcHBlbmRGaWxlKHJlcG9zRmlsZSwgYCR7cmVwb1VybH1cXG5gKVxuXG4gICAgLy8gVXBkYXRlIHBhY2thZ2UgaW5kZXggYWZ0ZXIgYWRkaW5nIHJlcG9zaXRvcnlcbiAgICBhd2FpdCB1cGRhdGVBcGtNZW1vaXplZC5jbGVhcigpXG4gICAgYXdhaXQgdXBkYXRlQXBrTWVtb2l6ZWQoKVxuXG4gICAgaW5mbyhgU3VjY2Vzc2Z1bGx5IGFkZGVkIHJlcG9zaXRvcnk6ICR7cmVwb1VybH1gKVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gYWRkIHJlcG9zaXRvcnkgJHtyZXBvVXJsfTogJHtlcnJvcn1gKVxuICB9XG59XG5cbi8qKlxuICogRW5hYmxlIHRoZSBjb21tdW5pdHkgcmVwb3NpdG9yeVxuICogQHJldHVybnMgV2hldGhlciB0aGUgcmVwb3NpdG9yeSB3YXMgYWRkZWQgc3VjY2Vzc2Z1bGx5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmFibGVDb21tdW5pdHlSZXBvc2l0b3J5KCkge1xuICBjb25zdCBhbHBpbmVWZXJzaW9uID0gKGF3YWl0IGdldEFscGluZVZlcnNpb24oKSkuc3BsaXQoXCIuXCIpLnNsaWNlKDAsIDIpLmpvaW4oXCIuXCIpXG5cbiAgcmV0dXJuIGFkZEFwa1JlcG9zaXRvcnkoYGh0dHBzOi8vZGwtY2RuLmFscGluZWxpbnV4Lm9yZy9hbHBpbmUvdiR7YWxwaW5lVmVyc2lvbn0vY29tbXVuaXR5L2ApXG59XG5cbi8qKlxuICogR2V0IHRoZSBBbHBpbmUgdmVyc2lvblxuICogQHJldHVybnMgVGhlIEFscGluZSB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBbHBpbmVWZXJzaW9uKCkge1xuICBjb25zdCByZWxlYXNlRmlsZSA9IFwiL2V0Yy9hbHBpbmUtcmVsZWFzZVwiXG4gIGlmICghKGF3YWl0IHBhdGhFeGlzdHMocmVsZWFzZUZpbGUpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWxwaW5lIHJlbGVhc2UgZmlsZSBub3QgZm91bmQgYXQgJHtyZWxlYXNlRmlsZX1gKVxuICB9XG4gIHJldHVybiByZWFkRmlsZShyZWxlYXNlRmlsZSwgXCJ1dGY4XCIpXG59XG4iXX0=