1import * as Changelogs from '../Changelogs';
2import dependenciesChangelogs from '../data/androidDependenciesChangelogs.json';
3import { AndroidProjectDependenciesUpdates } from './types';
4
5function maybeWrapInChangelogLink(text: string, dependencyName: string) {
6  const changelog = dependenciesChangelogs[dependencyName];
7  return changelog ? `[${text}](${changelog})` : text;
8}
9
10export async function addChangelogEntries(
11  updatesList: AndroidProjectDependenciesUpdates[]
12): Promise<void> {
13  await Promise.all(
14    updatesList
15      .filter((update) => update.updates.length > 0)
16      .filter((update) => update.report.changelogPath)
17      .map(async ({ updates, report }) => {
18        const changelog = Changelogs.loadFrom(report.changelogPath!);
19
20        const changelogEntries = updates.map(
21          (update) =>
22            `Updated Android native dependency: ${maybeWrapInChangelogLink(
23              `\`${update.fullName}:${update.oldVersion}\` ➡️ \`${update.newVersion}\``,
24              update.fullName
25            )}`
26        );
27        await changelog.insertEntriesAsync(
28          Changelogs.UNPUBLISHED_VERSION_NAME,
29          Changelogs.ChangeType.LIBRARY_UPGRADES,
30          null,
31          changelogEntries
32        );
33
34        await changelog.saveAsync();
35      })
36  );
37}
38