1 | import { AsyncSeriesBailHook } from 'tapable';
|
2 | import { ICommitAuthor, IExtendedCommit } from './log-parse';
|
3 | import { ILabelDefinitionMap } from './release';
|
4 | import { ILogger } from './utils/logger';
|
5 | export interface IGenerateReleaseNotesOptions {
|
6 | owner: string;
|
7 | repo: string;
|
8 | baseUrl: string;
|
9 | jira?: string;
|
10 | labels: ILabelDefinitionMap;
|
11 | baseBranch: string;
|
12 | }
|
13 | export interface IChangelogHooks {
|
14 | renderChangelogLine: AsyncSeriesBailHook<[IExtendedCommit[], (commit: IExtendedCommit) => Promise<string>], string[] | void>;
|
15 | renderChangelogTitle: AsyncSeriesBailHook<[string, {
|
16 | [label: string]: string;
|
17 | }], string | void>;
|
18 | renderChangelogAuthor: AsyncSeriesBailHook<[ICommitAuthor, IExtendedCommit, IGenerateReleaseNotesOptions], string | void>;
|
19 | renderChangelogAuthorLine: AsyncSeriesBailHook<[ICommitAuthor, string], string | void>;
|
20 | }
|
21 | export default class Changelog {
|
22 | readonly hooks: IChangelogHooks;
|
23 | private readonly logger;
|
24 | private readonly options;
|
25 | constructor(logger: ILogger, options: IGenerateReleaseNotesOptions);
|
26 | loadDefaultHooks(): void;
|
27 | generateReleaseNotes(commits: IExtendedCommit[]): Promise<string>;
|
28 | createUserLink(author: ICommitAuthor, commit: IExtendedCommit): string | undefined;
|
29 | /**
|
30 | * Split commits into changelogTitle sections.
|
31 | */
|
32 | private splitCommits;
|
33 | private createUserLinkList;
|
34 | private generateCommitNote;
|
35 | private createAuthorSection;
|
36 | private createLabelSection;
|
37 | private createReleaseNotesSection;
|
38 | }
|