Skip to content

Commit 42778a6

Browse files
authored
Merge pull request #8 from fingerprintjs/refactor/formatter
This refactor simplifies the way release notes are generated by adding a new `formatter` function.
2 parents 8d268f4 + e31f3c1 commit 42778a6

File tree

1 file changed

+27
-19
lines changed

1 file changed

+27
-19
lines changed

src/generateNotes.ts

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,23 @@ import PluginConfig, { PlatformConfig } from './@types/pluginConfig'
33
import { resolve as androidResolve } from './platforms/android'
44
import { resolve as iOSResolve } from './platforms/iOS'
55

6-
const generateNotes = async (config: PluginConfig, ctx: GenerateNotesContext) => {
7-
const platformVersions: { [key in keyof PlatformConfig]?: string } = {}
6+
const formatter = (platforms: { displayName: string; versionRange: string }[], heading?: string) => {
7+
let result = ''
8+
9+
if (heading) {
10+
result += `### ${heading}\n\n`
11+
}
812

13+
result += platforms
14+
.map(({ displayName, versionRange }) => {
15+
return `${displayName} Version Range: **\`${versionRange}\`**`
16+
})
17+
.join('\n\n')
18+
19+
return result
20+
}
21+
22+
const generateNotes = async (config: PluginConfig, ctx: GenerateNotesContext) => {
923
// Normalize plugin config: prefer `platforms`, fall back to legacy top-level platform keys for backward compatibility
1024
// TODO: Remove support for top-level `android` and `iOS` keys in the next major release (BC)
1125
const platforms: PlatformConfig = config.platforms || {}
@@ -25,33 +39,27 @@ const generateNotes = async (config: PluginConfig, ctx: GenerateNotesContext) =>
2539
throw new Error('No platforms specified. You must configure at least one platform under `platforms`.')
2640
}
2741

42+
const platformVersions: { displayName: string; versionRange: string }[] = []
43+
2844
if (platforms.android) {
2945
const androidVersion = await androidResolve(ctx, platforms.android)
30-
platformVersions.android = androidVersion
46+
platformVersions.push({
47+
displayName: platforms.android.displayName ?? 'Android',
48+
versionRange: androidVersion,
49+
})
3150
ctx.logger.log(`Detected Android Version: \`${androidVersion}\``)
3251
}
3352

3453
if (platforms.iOS) {
3554
const iOSVersion = await iOSResolve(ctx, platforms.iOS)
36-
platformVersions.iOS = iOSVersion
55+
platformVersions.push({
56+
displayName: platforms.iOS.displayName ?? 'iOS',
57+
versionRange: iOSVersion,
58+
})
3759
ctx.logger.log(`Detected iOS Version: \`${iOSVersion}\``)
3860
}
3961

40-
let notes = ''
41-
42-
if (config.heading) {
43-
notes += `### ${config.heading}\n\n`
44-
}
45-
46-
notes += Object.keys(platformVersions)
47-
.map((platformKey) => {
48-
const platform = platformKey as keyof PlatformConfig
49-
const version = platformVersions[platform]
50-
return `${platforms[platform]?.displayName ?? platform} Version Range: **\`${version}\`**`
51-
})
52-
.join('\n\n')
53-
54-
return notes
62+
return formatter(platformVersions, config.heading)
5563
}
5664

5765
export default generateNotes

0 commit comments

Comments
 (0)