From 730afec83d5046c095c43a9831ce0de61851d786 Mon Sep 17 00:00:00 2001 From: Wei Kang Date: Thu, 5 Aug 2021 17:49:25 +0800 Subject: [PATCH] add feature to show commit url in the MR title --- src/changelogGenerator.ts | 11 ++++++++++- src/gitService.ts | 2 ++ src/gitlab/gitlabService.ts | 15 ++++++++++++++- src/interfaces/config.ts | 1 + src/interfaces/milestone.ts | 1 + 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/changelogGenerator.ts b/src/changelogGenerator.ts index 039c9ee..bbeb135 100644 --- a/src/changelogGenerator.ts +++ b/src/changelogGenerator.ts @@ -51,6 +51,7 @@ class ChangelogGenerator { mergeRequestSections[section].forEach((mergeRequestTitle) => { mergeRequestsContent = mergeRequestsContent.concat(`- ${mergeRequestTitle}`); + mergeRequestsContent = mergeRequestsContent.concat( this.generateExternalIssuesSectionIfEnabled(mergeRequestTitle), ); @@ -86,7 +87,15 @@ class ChangelogGenerator { mergeRequests.forEach((mergeRequest) => { if (section.labels.some((label) => mergeRequest.labels.includes(label))) { - mergeRequestSections[section.title].push(mergeRequest.title); + let title = mergeRequest.title; + + if (this.#config.enableCommitSha) { + title = title.concat( + ` (${this.#gitService.getCommitUrl(mergeRequest.commitSha ?? '', this.#projectPath)})`, + ); + } + + mergeRequestSections[section.title].push(title); } }); }); diff --git a/src/gitService.ts b/src/gitService.ts index 8a49513..56ea4e4 100644 --- a/src/gitService.ts +++ b/src/gitService.ts @@ -9,6 +9,8 @@ abstract class GitService { } abstract getMergeRequests(milestone: string, projectPath: string): Promise>; + + abstract getCommitUrl(commitSha: string, projectPath: string): string; } export = GitService; diff --git a/src/gitlab/gitlabService.ts b/src/gitlab/gitlabService.ts index c7b9621..3d20d6a 100644 --- a/src/gitlab/gitlabService.ts +++ b/src/gitlab/gitlabService.ts @@ -1,8 +1,12 @@ +import Url = require('url'); +import Path = require('path'); + import GitService = require('../gitService'); -import { gql, GraphQLClient } from 'graphql-request'; import Config = require('../interfaces/config'); import MergeRequest = require('../interfaces/milestone'); +import { gql, GraphQLClient } from 'graphql-request'; + class GitLabService extends GitService { #client: GraphQLClient; @@ -33,6 +37,7 @@ class GitLabService extends GitService { title } } + mergeCommitSha } } } @@ -49,9 +54,17 @@ class GitLabService extends GitService { title: mergeRequest.title, labels, participants, + commitSha: mergeRequest.mergeCommitSha, }; }); } + + getCommitUrl(commitSha: string, projectPath: string): string { + const commitUrl = new Url.URL(this.config.serviceUrl); + commitUrl.pathname = Path.join(projectPath, '-', 'commit', commitSha); + + return commitUrl.toString(); + } } export = GitLabService; diff --git a/src/interfaces/config.ts b/src/interfaces/config.ts index d354cab..f57c895 100644 --- a/src/interfaces/config.ts +++ b/src/interfaces/config.ts @@ -10,6 +10,7 @@ interface Config { externalIssuesUrl?: string; externalIssuesProjects?: Array; enableExternalIssuesTracker?: boolean; + enableCommitSha?: boolean; } export = Config; diff --git a/src/interfaces/milestone.ts b/src/interfaces/milestone.ts index 9b384a7..0c962ae 100644 --- a/src/interfaces/milestone.ts +++ b/src/interfaces/milestone.ts @@ -2,6 +2,7 @@ interface MergeRequest { title: string; labels: Array; participants: Array; + commitSha?: string; } export = MergeRequest;