UNPKG

1.54 kBTypeScriptView Raw
1import { AsyncSeriesBailHook } from 'tapable';
2import { ICommitAuthor, IExtendedCommit } from './log-parse';
3import { ILabelDefinitionMap } from './release';
4import { ILogger } from './utils/logger';
5export interface IGenerateReleaseNotesOptions {
6 owner: string;
7 repo: string;
8 baseUrl: string;
9 jira?: string;
10 labels: ILabelDefinitionMap;
11 baseBranch: string;
12}
13export 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}
21export 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}