UNPKG

projen

Version:

CDK for software projects

83 lines 9.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tryProcessMacro = tryProcessMacro; const path = require("path"); const util_1 = require("../util"); 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 = (0, util_1.execOrUndefined)("git 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 ((0, util_1.execOrUndefined)(`git config --get --includes ${key}`, { cwd }) ?? (0, util_1.execOrUndefined)(`git 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9tYWNyb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwwQ0E4QkM7QUFqQ0QsNkJBQTZCO0FBQzdCLGtDQUFnRTtBQUVoRSxTQUFnQixlQUFlLENBQUMsR0FBVyxFQUFFLEtBQWE7SUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxRQUFRLEtBQUssRUFBRSxDQUFDO1FBQ2QsS0FBSyxVQUFVO1lBQ2IsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxhQUFhO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQWUsRUFBQywyQkFBMkIsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQ1IsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUUsT0FBTyxzQkFBc0IsSUFBSSxJQUFJLE9BQU8sTUFBTSxDQUFDO1FBRXJELEtBQUssZ0JBQWdCO1lBQ25CLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUN0RCxLQUFLLGlCQUFpQjtZQUNwQixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixLQUFLLHFCQUFxQjtZQUN4QixPQUFPLElBQUEsMkJBQW9CLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsR0FBVztJQUNoRCxPQUFPLENBQ0wsSUFBQSxzQkFBZSxFQUFDLCtCQUErQixHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzlELElBQUEsc0JBQWUsRUFBQyx3Q0FBd0MsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUN4RSxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVc7SUFDL0IsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUksaUJBQWlCLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxvQkFBb0I7SUFDM0IsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7SUFDMUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQzVELENBQUM7UUFDRCxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELCtCQUErQjtJQUMvQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7SUFDaEQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBleGVjT3JVbmRlZmluZWQsIGZvcm1hdEFzUHl0aG9uTW9kdWxlIH0gZnJvbSBcIi4uL3V0aWxcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyeVByb2Nlc3NNYWNybyhjd2Q6IHN0cmluZywgbWFjcm86IHN0cmluZykge1xuICBpZiAoIW1hY3JvLnN0YXJ0c1dpdGgoXCIkXCIpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGJhc2VkaXIgPSBwYXRoLmJhc2VuYW1lKGN3ZCk7XG5cbiAgc3dpdGNoIChtYWNybykge1xuICAgIGNhc2UgXCIkQkFTRURJUlwiOlxuICAgICAgcmV0dXJuIGJhc2VkaXI7XG4gICAgY2FzZSBcIiRHSVRfUkVNT1RFXCI6XG4gICAgICBjb25zdCBvcmlnaW4gPSBleGVjT3JVbmRlZmluZWQoXCJnaXQgcmVtb3RlIGdldC11cmwgb3JpZ2luXCIsIHsgY3dkIH0pO1xuICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICByZXR1cm4gb3JpZ2luO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2x1ZyA9XG4gICAgICAgIGdldEZyb21HaXRDb25maWcoY3dkLCBcImdpdGh1Yi51c2VyXCIpID8/IHJlc29sdmVFbWFpbChjd2QpLnNwbGl0KFwiQFwiKVswXTtcbiAgICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7c2x1Z30vJHtiYXNlZGlyfS5naXRgO1xuXG4gICAgY2FzZSBcIiRHSVRfVVNFUl9OQU1FXCI6XG4gICAgICByZXR1cm4gZ2V0RnJvbUdpdENvbmZpZyhjd2QsIFwidXNlci5uYW1lXCIpID8/IFwidXNlclwiO1xuICAgIGNhc2UgXCIkR0lUX1VTRVJfRU1BSUxcIjpcbiAgICAgIHJldHVybiByZXNvbHZlRW1haWwoY3dkKTtcbiAgICBjYXNlIFwiJFBZVEhPTl9NT0RVTEVfTkFNRVwiOlxuICAgICAgcmV0dXJuIGZvcm1hdEFzUHl0aG9uTW9kdWxlKGJhc2VkaXIpO1xuICAgIGNhc2UgXCIkUEFDS0FHRV9NQU5BR0VSXCI6XG4gICAgICByZXR1cm4gZGV0ZWN0UGFja2FnZU1hbmFnZXIoKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHZhbHVlIGZyb20gZ2l0IGNvbmZpZy4gU2VhcmNoZXMgbG9jYWwgYW5kIHRoZW4gZ2xvYmFsIGdpdCBjb25maWcuXG4gKiBAcGFyYW0ga2V5IHRoZSBjb25maWcga2V5XG4gKi9cbmZ1bmN0aW9uIGdldEZyb21HaXRDb25maWcoY3dkOiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChcbiAgICBleGVjT3JVbmRlZmluZWQoYGdpdCBjb25maWcgLS1nZXQgLS1pbmNsdWRlcyAke2tleX1gLCB7IGN3ZCB9KSA/P1xuICAgIGV4ZWNPclVuZGVmaW5lZChgZ2l0IGNvbmZpZyAtLWdldCAtLWdsb2JhbCAtLWluY2x1ZGVzICR7a2V5fWAsIHsgY3dkIH0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVFbWFpbChjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRGcm9tR2l0Q29uZmlnKGN3ZCwgXCJ1c2VyLmVtYWlsXCIpID8/IFwidXNlckBkb21haW4uY29tXCI7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB0aGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQgdG8gcnVuIGBwcm9qZW4gbmV3YC5cbiAqXG4gKiBVc2VzIGBucG1fY29uZmlnX3VzZXJfYWdlbnRgIChlLmcuIFwieWFybi80LjEuMCBucG0vPyBub2RlL3YyMC4wLjBcIikgdG9cbiAqIGlkZW50aWZ5IHRoZSBwYWNrYWdlIG1hbmFnZXIgYW5kIHZlcnNpb24uIEZhbGxzIGJhY2sgdG8gYG5wbV9leGVjcGF0aGAgaWZcbiAqIHRoZSB1c2VyIGFnZW50IGlzIG5vdCBzZXQuIERlZmF1bHRzIHRvIGBucG1gIHdoZW4gZGV0ZWN0aW9uIGZhaWxzLlxuICpcbiAqIEZvciB5YXJuLCB0aGUgdmVyc2lvbiBkZXRlcm1pbmVzIGNsYXNzaWMgKDEueCkgdnMgYmVycnkgKD49MikuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdFBhY2thZ2VNYW5hZ2VyKCk6IHN0cmluZyB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHByb2Nlc3MuZW52Lm5wbV9jb25maWdfdXNlcl9hZ2VudCA/PyBcIlwiO1xuICBjb25zdCBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvXihcXHcrKVxcLyhcXGQrKS8pO1xuICBpZiAobWF0Y2gpIHtcbiAgICBjb25zdCBbLCBuYW1lLCBtYWpvcl0gPSBtYXRjaDtcbiAgICBpZiAobmFtZSA9PT0gXCJ5YXJuXCIpIHtcbiAgICAgIHJldHVybiBOdW1iZXIobWFqb3IpID49IDIgPyBcInlhcm5fYmVycnlcIiA6IFwieWFybl9jbGFzc2ljXCI7XG4gICAgfVxuICAgIGlmIChuYW1lID09PSBcInBucG1cIikge1xuICAgICAgcmV0dXJuIFwicG5wbVwiO1xuICAgIH1cbiAgICBpZiAobmFtZSA9PT0gXCJidW5cIikge1xuICAgICAgcmV0dXJuIFwiYnVuXCI7XG4gICAgfVxuICAgIGlmIChuYW1lID09PSBcIm5wbVwiKSB7XG4gICAgICByZXR1cm4gXCJucG1cIjtcbiAgICB9XG4gIH1cblxuICAvLyBGYWxsYmFjazogY2hlY2sgbnBtX2V4ZWNwYXRoXG4gIGNvbnN0IGV4ZWNQYXRoID0gcHJvY2Vzcy5lbnYubnBtX2V4ZWNwYXRoID8/IFwiXCI7XG4gIGlmIChleGVjUGF0aC5pbmNsdWRlcyhcInlhcm5cIikpIHtcbiAgICByZXR1cm4gXCJ5YXJuX2NsYXNzaWNcIjtcbiAgfVxuICBpZiAoZXhlY1BhdGguaW5jbHVkZXMoXCJwbnBtXCIpKSB7XG4gICAgcmV0dXJuIFwicG5wbVwiO1xuICB9XG4gIGlmIChleGVjUGF0aC5pbmNsdWRlcyhcImJ1blwiKSkge1xuICAgIHJldHVybiBcImJ1blwiO1xuICB9XG4gIHJldHVybiBcIm5wbVwiO1xufVxuIl19