UNPKG

projen

Version:

CDK for software projects

63 lines 7.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.secretToString = secretToString; exports.context = context; exports.isHiddenPath = isHiddenPath; exports.ensureNotHiddenPath = ensureNotHiddenPath; exports.toGitHubExpr = toGitHubExpr; exports.projectPathRelativeToRepoRoot = projectPathRelativeToRepoRoot; const node_path_1 = require("node:path"); const util_1 = require("../../util"); const path_1 = require("../../util/path"); function secretToString(secretName) { return `\${{ secrets.${secretName} }}`; } function context(value) { return `\${{ ${value} }}`; } // Checks if part of the file path is hidden function isHiddenPath(path) { return /(^|\/)\.[^\/\.]/g.test(path); } // Helper to assert a path is not hidden function ensureNotHiddenPath(value, name) { if (isHiddenPath(value)) { throw Error(`${name} cannot be a hidden path, got: ${value}`); } } /** * Turn any JavaScript value into a GitHub expression */ function toGitHubExpr(x) { switch (typeof x) { case "string": return `'${x.replace(/'/g, `''`)}'`; case "number": case "boolean": // The JSON representation of this value is also the GH representation of this value return JSON.stringify(x); case "object": if (x === null) { return "null"; } return `fromJSON(${toGitHubExpr(JSON.stringify(x))})`; default: throw new Error(`Unsupported type: ${typeof x}`); } } /** * Returns the relative path of a project from the root of the repository * * This is a bit of hack at the moment, because projects currently don't have the concept of a repository. * The `.github` directory is always created within the outdir of the root project. * Consequently this means a GitHub root project cannot really have an outdir and GH Workflows at the same time. * Or in other words, the outdir of the root project is to be assumed the repository root. * * This helper function can be used to retrieve the correct `working-directory` for a given project. * * @returns path to be used as `working-directory` of a GitHub workflow, this is never empty and will return `./` for the root project */ function projectPathRelativeToRepoRoot(project) { return (0, path_1.ensureRelativePathStartsWithDot)((0, util_1.normalizePersistedPath)((0, node_path_1.relative)(project.root.outdir, project.outdir))); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9naXRodWIvcHJpdmF0ZS91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esd0NBRUM7QUFFRCwwQkFFQztBQUdELG9DQUVDO0FBR0Qsa0RBSUM7QUFLRCxvQ0FnQkM7QUFjRCxzRUFJQztBQTlERCx5Q0FBcUM7QUFFckMscUNBQW9EO0FBQ3BELDBDQUFrRTtBQUVsRSxTQUFnQixjQUFjLENBQUMsVUFBa0I7SUFDL0MsT0FBTyxnQkFBZ0IsVUFBVSxLQUFLLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQWdCLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLE9BQU8sUUFBUSxLQUFLLEtBQUssQ0FBQztBQUM1QixDQUFDO0FBRUQsNENBQTRDO0FBQzVDLFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCx3Q0FBd0M7QUFDeEMsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDN0QsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksa0NBQWtDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FBQyxDQUFtQjtJQUM5QyxRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDdEMsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFNBQVM7WUFDWixvRkFBb0Y7WUFDcEYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLEtBQUssUUFBUTtZQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNmLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxPQUFPLFlBQVksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3hEO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBQyxPQUFnQjtJQUM1RCxPQUFPLElBQUEsc0NBQStCLEVBQ3BDLElBQUEsNkJBQXNCLEVBQUMsSUFBQSxvQkFBUSxFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN0RSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4uLy4uL3Byb2plY3RcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGggfSBmcm9tIFwiLi4vLi4vdXRpbFwiO1xuaW1wb3J0IHsgZW5zdXJlUmVsYXRpdmVQYXRoU3RhcnRzV2l0aERvdCB9IGZyb20gXCIuLi8uLi91dGlsL3BhdGhcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3JldFRvU3RyaW5nKHNlY3JldE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgXFwke3sgc2VjcmV0cy4ke3NlY3JldE5hbWV9IH19YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHQodmFsdWU6IHN0cmluZykge1xuICByZXR1cm4gYFxcJHt7ICR7dmFsdWV9IH19YDtcbn1cblxuLy8gQ2hlY2tzIGlmIHBhcnQgb2YgdGhlIGZpbGUgcGF0aCBpcyBoaWRkZW5cbmV4cG9ydCBmdW5jdGlvbiBpc0hpZGRlblBhdGgocGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiAvKF58XFwvKVxcLlteXFwvXFwuXS9nLnRlc3QocGF0aCk7XG59XG5cbi8vIEhlbHBlciB0byBhc3NlcnQgYSBwYXRoIGlzIG5vdCBoaWRkZW5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVOb3RIaWRkZW5QYXRoKHZhbHVlOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNIaWRkZW5QYXRoKHZhbHVlKSkge1xuICAgIHRocm93IEVycm9yKGAke25hbWV9IGNhbm5vdCBiZSBhIGhpZGRlbiBwYXRoLCBnb3Q6ICR7dmFsdWV9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUdXJuIGFueSBKYXZhU2NyaXB0IHZhbHVlIGludG8gYSBHaXRIdWIgZXhwcmVzc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9HaXRIdWJFeHByKHg6IE5vbk51bGxhYmxlPGFueT4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGVvZiB4KSB7XG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgcmV0dXJuIGAnJHt4LnJlcGxhY2UoLycvZywgYCcnYCl9J2A7XG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAvLyBUaGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHZhbHVlIGlzIGFsc28gdGhlIEdIIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdmFsdWVcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh4KTtcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gYGZyb21KU09OKCR7dG9HaXRIdWJFeHByKEpTT04uc3RyaW5naWZ5KHgpKX0pYDtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlOiAke3R5cGVvZiB4fWApO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcmVsYXRpdmUgcGF0aCBvZiBhIHByb2plY3QgZnJvbSB0aGUgcm9vdCBvZiB0aGUgcmVwb3NpdG9yeVxuICpcbiAqIFRoaXMgaXMgYSBiaXQgb2YgaGFjayBhdCB0aGUgbW9tZW50LCBiZWNhdXNlIHByb2plY3RzIGN1cnJlbnRseSBkb24ndCBoYXZlIHRoZSBjb25jZXB0IG9mIGEgcmVwb3NpdG9yeS5cbiAqIFRoZSBgLmdpdGh1YmAgZGlyZWN0b3J5IGlzIGFsd2F5cyBjcmVhdGVkIHdpdGhpbiB0aGUgb3V0ZGlyIG9mIHRoZSByb290IHByb2plY3QuXG4gKiBDb25zZXF1ZW50bHkgdGhpcyBtZWFucyBhIEdpdEh1YiByb290IHByb2plY3QgY2Fubm90IHJlYWxseSBoYXZlIGFuIG91dGRpciBhbmQgR0ggV29ya2Zsb3dzIGF0IHRoZSBzYW1lIHRpbWUuXG4gKiBPciBpbiBvdGhlciB3b3JkcywgdGhlIG91dGRpciBvZiB0aGUgcm9vdCBwcm9qZWN0IGlzIHRvIGJlIGFzc3VtZWQgdGhlIHJlcG9zaXRvcnkgcm9vdC5cbiAqXG4gKiBUaGlzIGhlbHBlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgY29ycmVjdCBgd29ya2luZy1kaXJlY3RvcnlgIGZvciBhIGdpdmVuIHByb2plY3QuXG4gKlxuICogQHJldHVybnMgcGF0aCB0byBiZSB1c2VkIGFzIGB3b3JraW5nLWRpcmVjdG9yeWAgb2YgYSBHaXRIdWIgd29ya2Zsb3csIHRoaXMgaXMgbmV2ZXIgZW1wdHkgYW5kIHdpbGwgcmV0dXJuIGAuL2AgZm9yIHRoZSByb290IHByb2plY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RQYXRoUmVsYXRpdmVUb1JlcG9Sb290KHByb2plY3Q6IFByb2plY3QpOiBzdHJpbmcge1xuICByZXR1cm4gZW5zdXJlUmVsYXRpdmVQYXRoU3RhcnRzV2l0aERvdChcbiAgICBub3JtYWxpemVQZXJzaXN0ZWRQYXRoKHJlbGF0aXZlKHByb2plY3Qucm9vdC5vdXRkaXIsIHByb2plY3Qub3V0ZGlyKSksXG4gICk7XG59XG4iXX0=