UNPKG

projen

Version:

CDK for software projects

117 lines • 11 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.tryProcessMacro = tryProcessMacro; const path = __importStar(require("path")); const util_1 = require("../util"); const exec_1 = require("../util/exec"); function tryProcessMacro(cwd, macro) { if (!macro.startsWith("$")) { return undefined; } const basedir = path.basename(cwd); switch (macro) { case "$BASEDIR": return basedir; case "$GIT_REMOTE": const origin = exec_1.git.tryCapture(["remote", "get-url", "origin"], { cwd }); if (origin) { return origin; } const slug = getFromGitConfig(cwd, "github.user") ?? resolveEmail(cwd).split("@")[0]; return `https://github.com/${slug}/${basedir}.git`; case "$GIT_USER_NAME": return getFromGitConfig(cwd, "user.name") ?? "user"; case "$GIT_USER_EMAIL": return resolveEmail(cwd); case "$PYTHON_MODULE_NAME": return (0, util_1.formatAsPythonModule)(basedir); case "$PACKAGE_MANAGER": return detectPackageManager(); } return undefined; } /** * Returns a value from git config. Searches local and then global git config. * @param key the config key */ function getFromGitConfig(cwd, key) { return (exec_1.git.tryCapture(["config", "--get", "--includes", key], { cwd }) ?? exec_1.git.tryCapture(["config", "--get", "--global", "--includes", key], { cwd })); } function resolveEmail(cwd) { return getFromGitConfig(cwd, "user.email") ?? "user@domain.com"; } /** * Detects the package manager used to run `projen new`. * * Uses `npm_config_user_agent` (e.g. "yarn/4.1.0 npm/? node/v20.0.0") to * identify the package manager and version. Falls back to `npm_execpath` if * the user agent is not set. Defaults to `npm` when detection fails. * * For yarn, the version determines classic (1.x) vs berry (>=2). */ function detectPackageManager() { const userAgent = process.env.npm_config_user_agent ?? ""; const match = userAgent.match(/^(\w+)\/(\d+)/); if (match) { const [, name, major] = match; if (name === "yarn") { return Number(major) >= 2 ? "yarn_berry" : "yarn_classic"; } if (name === "pnpm") { return "pnpm"; } if (name === "bun") { return "bun"; } if (name === "npm") { return "npm"; } } // Fallback: check npm_execpath const execPath = process.env.npm_execpath ?? ""; if (execPath.includes("yarn")) { return "yarn_classic"; } if (execPath.includes("pnpm")) { return "pnpm"; } if (execPath.includes("bun")) { return "bun"; } return "npm"; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9tYWNyb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSwwQ0E4QkM7QUFsQ0QsMkNBQTZCO0FBQzdCLGtDQUErQztBQUMvQyx1Q0FBbUM7QUFFbkMsU0FBZ0IsZUFBZSxDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0IsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkMsUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUNkLEtBQUssVUFBVTtZQUNiLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssYUFBYTtZQUNoQixNQUFNLE1BQU0sR0FBRyxVQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDeEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQ1IsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUUsT0FBTyxzQkFBc0IsSUFBSSxJQUFJLE9BQU8sTUFBTSxDQUFDO1FBRXJELEtBQUssZ0JBQWdCO1lBQ25CLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUN0RCxLQUFLLGlCQUFpQjtZQUNwQixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixLQUFLLHFCQUFxQjtZQUN4QixPQUFPLElBQUEsMkJBQW9CLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsR0FBVztJQUNoRCxPQUFPLENBQ0wsVUFBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDL0QsVUFBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQzVFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsR0FBVztJQUMvQixPQUFPLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSSxpQkFBaUIsQ0FBQztBQUNsRSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLG9CQUFvQjtJQUMzQixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztJQUMxRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNuQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNuQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGZvcm1hdEFzUHl0aG9uTW9kdWxlIH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IGdpdCB9IGZyb20gXCIuLi91dGlsL2V4ZWNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyeVByb2Nlc3NNYWNybyhjd2Q6IHN0cmluZywgbWFjcm86IHN0cmluZykge1xuICBpZiAoIW1hY3JvLnN0YXJ0c1dpdGgoXCIkXCIpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGJhc2VkaXIgPSBwYXRoLmJhc2VuYW1lKGN3ZCk7XG5cbiAgc3dpdGNoIChtYWNybykge1xuICAgIGNhc2UgXCIkQkFTRURJUlwiOlxuICAgICAgcmV0dXJuIGJhc2VkaXI7XG4gICAgY2FzZSBcIiRHSVRfUkVNT1RFXCI6XG4gICAgICBjb25zdCBvcmlnaW4gPSBnaXQudHJ5Q2FwdHVyZShbXCJyZW1vdGVcIiwgXCJnZXQtdXJsXCIsIFwib3JpZ2luXCJdLCB7IGN3ZCB9KTtcbiAgICAgIGlmIChvcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNsdWcgPVxuICAgICAgICBnZXRGcm9tR2l0Q29uZmlnKGN3ZCwgXCJnaXRodWIudXNlclwiKSA/PyByZXNvbHZlRW1haWwoY3dkKS5zcGxpdChcIkBcIilbMF07XG4gICAgICByZXR1cm4gYGh0dHBzOi8vZ2l0aHViLmNvbS8ke3NsdWd9LyR7YmFzZWRpcn0uZ2l0YDtcblxuICAgIGNhc2UgXCIkR0lUX1VTRVJfTkFNRVwiOlxuICAgICAgcmV0dXJuIGdldEZyb21HaXRDb25maWcoY3dkLCBcInVzZXIubmFtZVwiKSA/PyBcInVzZXJcIjtcbiAgICBjYXNlIFwiJEdJVF9VU0VSX0VNQUlMXCI6XG4gICAgICByZXR1cm4gcmVzb2x2ZUVtYWlsKGN3ZCk7XG4gICAgY2FzZSBcIiRQWVRIT05fTU9EVUxFX05BTUVcIjpcbiAgICAgIHJldHVybiBmb3JtYXRBc1B5dGhvbk1vZHVsZShiYXNlZGlyKTtcbiAgICBjYXNlIFwiJFBBQ0tBR0VfTUFOQUdFUlwiOlxuICAgICAgcmV0dXJuIGRldGVjdFBhY2thZ2VNYW5hZ2VyKCk7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSB2YWx1ZSBmcm9tIGdpdCBjb25maWcuIFNlYXJjaGVzIGxvY2FsIGFuZCB0aGVuIGdsb2JhbCBnaXQgY29uZmlnLlxuICogQHBhcmFtIGtleSB0aGUgY29uZmlnIGtleVxuICovXG5mdW5jdGlvbiBnZXRGcm9tR2l0Q29uZmlnKGN3ZDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoXG4gICAgZ2l0LnRyeUNhcHR1cmUoW1wiY29uZmlnXCIsIFwiLS1nZXRcIiwgXCItLWluY2x1ZGVzXCIsIGtleV0sIHsgY3dkIH0pID8/XG4gICAgZ2l0LnRyeUNhcHR1cmUoW1wiY29uZmlnXCIsIFwiLS1nZXRcIiwgXCItLWdsb2JhbFwiLCBcIi0taW5jbHVkZXNcIiwga2V5XSwgeyBjd2QgfSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUVtYWlsKGN3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldEZyb21HaXRDb25maWcoY3dkLCBcInVzZXIuZW1haWxcIikgPz8gXCJ1c2VyQGRvbWFpbi5jb21cIjtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCB0byBydW4gYHByb2plbiBuZXdgLlxuICpcbiAqIFVzZXMgYG5wbV9jb25maWdfdXNlcl9hZ2VudGAgKGUuZy4gXCJ5YXJuLzQuMS4wIG5wbS8/IG5vZGUvdjIwLjAuMFwiKSB0b1xuICogaWRlbnRpZnkgdGhlIHBhY2thZ2UgbWFuYWdlciBhbmQgdmVyc2lvbi4gRmFsbHMgYmFjayB0byBgbnBtX2V4ZWNwYXRoYCBpZlxuICogdGhlIHVzZXIgYWdlbnQgaXMgbm90IHNldC4gRGVmYXVsdHMgdG8gYG5wbWAgd2hlbiBkZXRlY3Rpb24gZmFpbHMuXG4gKlxuICogRm9yIHlhcm4sIHRoZSB2ZXJzaW9uIGRldGVybWluZXMgY2xhc3NpYyAoMS54KSB2cyBiZXJyeSAoPj0yKS5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0UGFja2FnZU1hbmFnZXIoKTogc3RyaW5nIHtcbiAgY29uc3QgdXNlckFnZW50ID0gcHJvY2Vzcy5lbnYubnBtX2NvbmZpZ191c2VyX2FnZW50ID8/IFwiXCI7XG4gIGNvbnN0IG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9eKFxcdyspXFwvKFxcZCspLyk7XG4gIGlmIChtYXRjaCkge1xuICAgIGNvbnN0IFssIG5hbWUsIG1ham9yXSA9IG1hdGNoO1xuICAgIGlmIChuYW1lID09PSBcInlhcm5cIikge1xuICAgICAgcmV0dXJuIE51bWJlcihtYWpvcikgPj0gMiA/IFwieWFybl9iZXJyeVwiIDogXCJ5YXJuX2NsYXNzaWNcIjtcbiAgICB9XG4gICAgaWYgKG5hbWUgPT09IFwicG5wbVwiKSB7XG4gICAgICByZXR1cm4gXCJwbnBtXCI7XG4gICAgfVxuICAgIGlmIChuYW1lID09PSBcImJ1blwiKSB7XG4gICAgICByZXR1cm4gXCJidW5cIjtcbiAgICB9XG4gICAgaWYgKG5hbWUgPT09IFwibnBtXCIpIHtcbiAgICAgIHJldHVybiBcIm5wbVwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGxiYWNrOiBjaGVjayBucG1fZXhlY3BhdGhcbiAgY29uc3QgZXhlY1BhdGggPSBwcm9jZXNzLmVudi5ucG1fZXhlY3BhdGggPz8gXCJcIjtcbiAgaWYgKGV4ZWNQYXRoLmluY2x1ZGVzKFwieWFyblwiKSkge1xuICAgIHJldHVybiBcInlhcm5fY2xhc3NpY1wiO1xuICB9XG4gIGlmIChleGVjUGF0aC5pbmNsdWRlcyhcInBucG1cIikpIHtcbiAgICByZXR1cm4gXCJwbnBtXCI7XG4gIH1cbiAgaWYgKGV4ZWNQYXRoLmluY2x1ZGVzKFwiYnVuXCIpKSB7XG4gICAgcmV0dXJuIFwiYnVuXCI7XG4gIH1cbiAgcmV0dXJuIFwibnBtXCI7XG59XG4iXX0=