UNPKG

projen

Version:

CDK for software projects

63 lines 7.37 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9naXRodWIvcHJpdmF0ZS91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esd0NBRUM7QUFFRCwwQkFFQztBQUdELG9DQUVDO0FBR0Qsa0RBSUM7QUFLRCxvQ0FnQkM7QUFjRCxzRUFJQztBQTlERCx5Q0FBcUM7QUFFckMscUNBQW9EO0FBQ3BELDBDQUFrRTtBQUVsRSxTQUFnQixjQUFjLENBQUMsVUFBa0I7SUFDL0MsT0FBTyxnQkFBZ0IsVUFBVSxLQUFLLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQWdCLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLE9BQU8sUUFBUSxLQUFLLEtBQUssQ0FBQztBQUM1QixDQUFDO0FBRUQsNENBQTRDO0FBQzVDLFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCx3Q0FBd0M7QUFDeEMsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDN0QsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLEtBQUssQ0FBQyxHQUFHLElBQUksa0NBQWtDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FBQyxDQUFtQjtJQUM5QyxRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDdEMsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFNBQVM7WUFDWixvRkFBb0Y7WUFDcEYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLEtBQUssUUFBUTtZQUNYLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNmLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxPQUFPLFlBQVksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3hEO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBQyxPQUFnQjtJQUM1RCxPQUFPLElBQUEsc0NBQStCLEVBQ3BDLElBQUEsNkJBQXNCLEVBQUMsSUFBQSxvQkFBUSxFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN0RSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi8uLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBub3JtYWxpemVQZXJzaXN0ZWRQYXRoIH0gZnJvbSBcIi4uLy4uL3V0aWxcIjtcbmltcG9ydCB7IGVuc3VyZVJlbGF0aXZlUGF0aFN0YXJ0c1dpdGhEb3QgfSBmcm9tIFwiLi4vLi4vdXRpbC9wYXRoXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNyZXRUb1N0cmluZyhzZWNyZXROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYFxcJHt7IHNlY3JldHMuJHtzZWNyZXROYW1lfSB9fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250ZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBcXCR7eyAke3ZhbHVlfSB9fWA7XG59XG5cbi8vIENoZWNrcyBpZiBwYXJ0IG9mIHRoZSBmaWxlIHBhdGggaXMgaGlkZGVuXG5leHBvcnQgZnVuY3Rpb24gaXNIaWRkZW5QYXRoKHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gLyhefFxcLylcXC5bXlxcL1xcLl0vZy50ZXN0KHBhdGgpO1xufVxuXG4vLyBIZWxwZXIgdG8gYXNzZXJ0IGEgcGF0aCBpcyBub3QgaGlkZGVuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTm90SGlkZGVuUGF0aCh2YWx1ZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzSGlkZGVuUGF0aCh2YWx1ZSkpIHtcbiAgICB0aHJvdyBFcnJvcihgJHtuYW1lfSBjYW5ub3QgYmUgYSBoaWRkZW4gcGF0aCwgZ290OiAke3ZhbHVlfWApO1xuICB9XG59XG5cbi8qKlxuICogVHVybiBhbnkgSmF2YVNjcmlwdCB2YWx1ZSBpbnRvIGEgR2l0SHViIGV4cHJlc3Npb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvR2l0SHViRXhwcih4OiBOb25OdWxsYWJsZTxhbnk+KTogc3RyaW5nIHtcbiAgc3dpdGNoICh0eXBlb2YgeCkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBgJyR7eC5yZXBsYWNlKC8nL2csIGAnJ2ApfSdgO1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgLy8gVGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhpcyB2YWx1ZSBpcyBhbHNvIHRoZSBHSCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHZhbHVlXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeCk7XG4gICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgaWYgKHggPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBmcm9tSlNPTigke3RvR2l0SHViRXhwcihKU09OLnN0cmluZ2lmeSh4KSl9KWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZTogJHt0eXBlb2YgeH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlbGF0aXZlIHBhdGggb2YgYSBwcm9qZWN0IGZyb20gdGhlIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnlcbiAqXG4gKiBUaGlzIGlzIGEgYml0IG9mIGhhY2sgYXQgdGhlIG1vbWVudCwgYmVjYXVzZSBwcm9qZWN0cyBjdXJyZW50bHkgZG9uJ3QgaGF2ZSB0aGUgY29uY2VwdCBvZiBhIHJlcG9zaXRvcnkuXG4gKiBUaGUgYC5naXRodWJgIGRpcmVjdG9yeSBpcyBhbHdheXMgY3JlYXRlZCB3aXRoaW4gdGhlIG91dGRpciBvZiB0aGUgcm9vdCBwcm9qZWN0LlxuICogQ29uc2VxdWVudGx5IHRoaXMgbWVhbnMgYSBHaXRIdWIgcm9vdCBwcm9qZWN0IGNhbm5vdCByZWFsbHkgaGF2ZSBhbiBvdXRkaXIgYW5kIEdIIFdvcmtmbG93cyBhdCB0aGUgc2FtZSB0aW1lLlxuICogT3IgaW4gb3RoZXIgd29yZHMsIHRoZSBvdXRkaXIgb2YgdGhlIHJvb3QgcHJvamVjdCBpcyB0byBiZSBhc3N1bWVkIHRoZSByZXBvc2l0b3J5IHJvb3QuXG4gKlxuICogVGhpcyBoZWxwZXIgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIGNvcnJlY3QgYHdvcmtpbmctZGlyZWN0b3J5YCBmb3IgYSBnaXZlbiBwcm9qZWN0LlxuICpcbiAqIEByZXR1cm5zIHBhdGggdG8gYmUgdXNlZCBhcyBgd29ya2luZy1kaXJlY3RvcnlgIG9mIGEgR2l0SHViIHdvcmtmbG93LCB0aGlzIGlzIG5ldmVyIGVtcHR5IGFuZCB3aWxsIHJldHVybiBgLi9gIGZvciB0aGUgcm9vdCBwcm9qZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0UGF0aFJlbGF0aXZlVG9SZXBvUm9vdChwcm9qZWN0OiBQcm9qZWN0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGVuc3VyZVJlbGF0aXZlUGF0aFN0YXJ0c1dpdGhEb3QoXG4gICAgbm9ybWFsaXplUGVyc2lzdGVkUGF0aChyZWxhdGl2ZShwcm9qZWN0LnJvb3Qub3V0ZGlyLCBwcm9qZWN0Lm91dGRpcikpXG4gICk7XG59XG4iXX0=