UNPKG

@catladder/cli

Version:

Panter cli tool for cloud CI/CD and DevOps

38 lines 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.gitProjectInformation = exports.getGitRemoteHostAndPath = exports.getProjectRootPath = void 0; const gitConfig_1 = require("./gitConfig"); const child_process_promise_1 = require("child-process-promise"); /** * Find the absolute path of the current git project root. */ const getProjectRootPath = async () => { const { stdout } = await (0, child_process_promise_1.exec)(`git rev-parse --show-toplevel`); return stdout.trim(); }; exports.getProjectRootPath = getProjectRootPath; /** * Get the git remote hostname and project path from the git config. */ const getGitRemoteHostAndPath = async () => { var _a; const remoteUrl = await (0, gitConfig_1.gitConfigGet)("remote.origin.url"); const remoteReg = /(https:\/\/|git@)([^:/]+)[:/]([^.]*)(\.git)?/; const match = (_a = remoteUrl.match(remoteReg)) !== null && _a !== void 0 ? _a : []; const [, , gitRemoteHost, gitRemotePath] = match; if (!(gitRemoteHost === null || gitRemoteHost === void 0 ? void 0 : gitRemoteHost.length) || !(gitRemotePath === null || gitRemotePath === void 0 ? void 0 : gitRemotePath.length)) { throw new Error(`Failed to parse git remote hostname and path from git configs remote.origin.url! ${remoteUrl}`); } return { gitRemoteHost, gitRemotePath }; }; exports.getGitRemoteHostAndPath = getGitRemoteHostAndPath; const gitProjectInformation = async () => { const [{ gitRemoteHost, gitRemotePath }, projectRootPath] = await Promise.all([(0, exports.getGitRemoteHostAndPath)(), (0, exports.getProjectRootPath)()]); return { gitRemoteHost, gitRemotePath, projectRootPath, }; }; exports.gitProjectInformation = gitProjectInformation; //# sourceMappingURL=gitProjectInformation.js.map