UNPKG

2.89 kBJavaScriptView Raw
1"use strict";
2var __rest = (this && this.__rest) || function (s, e) {
3 var t = {};
4 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5 t[p] = s[p];
6 if (s != null && typeof Object.getOwnPropertySymbols === "function")
7 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
8 t[p[i]] = s[p[i]];
9 return t;
10};
11var __importDefault = (this && this.__importDefault) || function (mod) {
12 return (mod && mod.__esModule) ? mod : { "default": mod };
13};
14Object.defineProperty(exports, "__esModule", { value: true });
15const path_1 = __importDefault(require("path"));
16const fs_1 = __importDefault(require("fs"));
17const env_ci_1 = __importDefault(require("env-ci"));
18const git_parse_1 = require("git-parse");
19const git_rev_sync_1 = __importDefault(require("git-rev-sync"));
20const lodash_pickby_1 = __importDefault(require("lodash.pickby"));
21const lodash_identity_1 = __importDefault(require("lodash.identity"));
22const findGitRoot = (start) => {
23 start = start || process.cwd();
24 if (typeof start === "string") {
25 if (start[start.length - 1] !== path_1.default.sep)
26 start += path_1.default.sep;
27 start = start.split(path_1.default.sep);
28 }
29 if (!start.length)
30 return;
31 start.pop();
32 const dir = start.join(path_1.default.sep);
33 if (fs_1.default.existsSync(path_1.default.join(dir, ".git"))) {
34 return path_1.default.normalize(dir);
35 }
36 else {
37 return findGitRoot(start);
38 }
39};
40exports.gitInfo = async (log) => {
41 const { commit, branch: ciBranch, root, prBranch } = env_ci_1.default();
42 const gitLoc = root ? root : findGitRoot();
43 if (!commit)
44 return;
45 let committer;
46 let branch = ciBranch || prBranch;
47 let remoteUrl = process.env.BUILD_REPOSITORY_ID;
48 let message;
49 if (gitLoc) {
50 const _a = await git_parse_1.gitToJs(gitLoc)
51 .then((commits) => commits && commits.length > 0
52 ? commits[0]
53 : { authorName: null, authorEmail: null, message: null })
54 .catch(() => ({ authorEmail: null, authorName: null, message: null })), { authorName, authorEmail } = _a, commit = __rest(_a, ["authorName", "authorEmail"]);
55 committer = `${authorName || ""} ${authorEmail ? `<${authorEmail}>` : ""}`.trim();
56 message = commit.message;
57 try {
58 remoteUrl = git_rev_sync_1.default.remoteUrl();
59 }
60 catch (e) {
61 log(["Unable to retrieve remote url, failed with:", e].join("\n\n"));
62 }
63 if (!branch) {
64 branch = git_rev_sync_1.default.branch([gitLoc]);
65 }
66 }
67 return lodash_pickby_1.default({
68 committer,
69 commit,
70 remoteUrl,
71 message,
72 branch
73 }, lodash_identity_1.default);
74};
75//# sourceMappingURL=git.js.map
\No newline at end of file