Skip to content

Commit 37e60e0

Browse files
committed
chore(scripts): add version history script
1 parent 8b31d9e commit 37e60e0

File tree

10 files changed

+3839
-487
lines changed

10 files changed

+3839
-487
lines changed

config/release.config.json

Lines changed: 3673 additions & 1 deletion
Large diffs are not rendered by default.

scripts/.eslintrc.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = {
2-
ignorePatterns: ['**.yml', 'tsconfig.json'],
2+
ignorePatterns: ['**.yml', 'tsconfig.json', 'foo'],
33

44
extends: "../.eslintrc.cjs",
55

scripts/ci/actions/restore-artifacts/builddir/index.cjs

Lines changed: 0 additions & 256 deletions
This file was deleted.

scripts/ci/codegen/createGitHubReleases.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable no-console */
22

33
import { ensureGitHubToken, getOctokit, OWNER, run, setVerbose, toAbsolutePath } from '../../common';
4-
import { isPreRelease } from '../../release/sla';
4+
import { isPreRelease } from '../../release/versionsHistory';
55
import type { Language } from '../../types';
66
import { cloneRepository } from '../utils';
77

scripts/ci/codegen/pushToAlgoliaDoc.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,6 @@ async function pushToAlgoliaDoc(): Promise<void> {
8686
head: targetBranch,
8787
});
8888

89-
await octokit.issues.createComment({
90-
owner: OWNER,
91-
repo: repository,
92-
issue_number: data.number,
93-
body: [
94-
`[**Preview SLA changes&rarr;**](https://deploy-preview-${data.number}--algolia-docs.netlify.app/doc/libraries/supported-versions/)`,
95-
].join('\n\n'),
96-
});
97-
9889
console.log(`Pull request created on ${OWNER}/${repository}`);
9990
console.log(` > ${data.url}`);
10091
}

scripts/cli/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { formatter } from '../formatter.js';
1111
import { generate } from '../generate.js';
1212
import { playground } from '../playground.js';
1313
import { createReleasePR } from '../release/createReleasePR.js';
14-
import { generateSLA } from '../release/sla.js';
14+
import { generateVersionsHistory } from '../release/versionsHistory.js';
1515
import { snippetsGenerateMany } from '../snippets/generate.js';
1616
import { buildSpecs } from '../specs';
1717
import type { Language } from '../types.js';
@@ -255,13 +255,13 @@ program
255255
undefined,
256256
)
257257
.option('-d, --dry-run', 'does not push anything to GitHub')
258-
.option('-sla, --sla-only', 'only generates the sla policy', false)
258+
.option('-vh, --versions-history', 'only generates the versions-history policy', false)
259259
.option('-b --breaking', 'allow breaking change on the CI', false)
260-
.action(async ({ verbose, releaseType, dryRun, slaOnly, breaking }) => {
260+
.action(async ({ verbose, releaseType, dryRun, versionsHistory, breaking }) => {
261261
setVerbose(Boolean(verbose));
262262

263-
if (slaOnly) {
264-
await generateSLA({});
263+
if (versionsHistory) {
264+
await generateVersionsHistory({});
265265

266266
return;
267267
}

scripts/release/__tests__/sla.test.ts renamed to scripts/release/__tests__/versionsHistory.test.ts

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
// @ts-nocheck this file is broken while the SLA is unclear
1+
// @ts-nocheck this file is broken while the VersionsHistory is unclear
22
import { describe, expect, it } from 'vitest';
33

44
import { fullReleaseConfig, LANGUAGES } from '../../common.js';
5-
import { generateLanguageSLA } from '../sla.js';
5+
import { generateLanguageVersionsHistory } from '../versionsHistory.js';
66

7-
describe('generateLanguageSLA', () => {
7+
describe('generateLanguageVersionsHistory', () => {
88
LANGUAGES.forEach((lang) => {
9-
if (!('sla' in fullReleaseConfig)) {
10-
fullReleaseConfig.sla = {};
9+
if (!('versionsHistory' in fullReleaseConfig)) {
10+
fullReleaseConfig.versionsHistory = {};
1111
}
1212

1313
// @ts-expect-error
14-
fullReleaseConfig.sla[lang] = {};
14+
fullReleaseConfig.versionsHistory[lang] = {};
1515
});
1616

1717
describe('no new releases', () => {
1818
it('parses version of the same minor', () => {
19-
generateLanguageSLA(
19+
generateLanguageVersionsHistory(
2020
[
2121
'1.2.4 Thu Dec 28 15:48:25 2023 +0000',
2222
'1.2.5 Tue Jan 2 14:17:11 2024 +0000',
@@ -28,7 +28,7 @@ describe('generateLanguageSLA', () => {
2828
);
2929

3030
// @ts-expect-error
31-
expect(fullReleaseConfig.sla.csharp).toEqual({
31+
expect(fullReleaseConfig.versionsHistory.csharp).toEqual({
3232
'1.2.4': {
3333
releaseDate: '2023-12-28',
3434
supportEnd: '2024-01-02',
@@ -52,7 +52,7 @@ describe('generateLanguageSLA', () => {
5252
});
5353

5454
it('parses version of different same minor', () => {
55-
generateLanguageSLA(
55+
generateLanguageVersionsHistory(
5656
[
5757
'1.1.4 Thu Dec 28 15:48:25 2023 +0000',
5858
'1.2.5 Tue Jan 2 14:17:11 2024 +0000',
@@ -64,7 +64,7 @@ describe('generateLanguageSLA', () => {
6464
);
6565

6666
// @ts-expect-error
67-
expect(fullReleaseConfig.sla.javascript).toEqual({
67+
expect(fullReleaseConfig.versionsHistory.javascript).toEqual({
6868
'1.1.4': {
6969
releaseDate: '2023-12-28',
7070
supportEnd: '2026-01-02',
@@ -91,7 +91,7 @@ describe('generateLanguageSLA', () => {
9191
});
9292

9393
it('ignores versions older than 2 years', () => {
94-
generateLanguageSLA(
94+
generateLanguageVersionsHistory(
9595
[
9696
'v1.0.9 Thu Dec 28 15:48:25 2011 +0000',
9797
'v1.1.4 Thu Dec 28 15:48:25 2021 +0000',
@@ -102,7 +102,7 @@ describe('generateLanguageSLA', () => {
102102
);
103103

104104
// @ts-expect-error
105-
expect(fullReleaseConfig.sla.php).toEqual({
105+
expect(fullReleaseConfig.versionsHistory.php).toEqual({
106106
'1.1.4': {
107107
releaseDate: '2021-12-28',
108108
supportEnd: '2026-01-02',
@@ -118,16 +118,20 @@ describe('generateLanguageSLA', () => {
118118

119119
it('overrides the previously stored versions and sanitize v prefixed versions', () => {
120120
// @ts-expect-error
121-
fullReleaseConfig.sla.go = { '0.1.2': { releaseDate: '2014-01-04', supportStatus: 'active' } };
121+
fullReleaseConfig.versionsHistory.go = { '0.1.2': { releaseDate: '2014-01-04', supportStatus: 'active' } };
122122

123-
generateLanguageSLA(['v1.1.4 Thu Dec 28 15:48:25 2023 +0000', 'v1.4.7 Tue Jan 2 14:17:11 2024 +0000'], 'go', {
124-
current: '1.4.7',
125-
next: null,
126-
releaseType: null,
127-
});
123+
generateLanguageVersionsHistory(
124+
['v1.1.4 Thu Dec 28 15:48:25 2023 +0000', 'v1.4.7 Tue Jan 2 14:17:11 2024 +0000'],
125+
'go',
126+
{
127+
current: '1.4.7',
128+
next: null,
129+
releaseType: null,
130+
},
131+
);
128132

129133
// @ts-expect-error
130-
expect(fullReleaseConfig.sla.go).toEqual({
134+
expect(fullReleaseConfig.versionsHistory.go).toEqual({
131135
'1.1.4': {
132136
releaseDate: '2023-12-28',
133137
supportEnd: '2026-01-02',
@@ -148,14 +152,14 @@ describe('generateLanguageSLA', () => {
148152
end.setFullYear(start.getFullYear() + 2);
149153

150154
it('same version as active version', () => {
151-
generateLanguageSLA(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'dart', {
155+
generateLanguageVersionsHistory(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'dart', {
152156
next: '1.2.4',
153157
current: '1.2.4',
154158
releaseType: 'minor',
155159
});
156160

157161
// @ts-expect-error
158-
expect(fullReleaseConfig.sla.dart).toEqual({
162+
expect(fullReleaseConfig.versionsHistory.dart).toEqual({
159163
'1.2.4': {
160164
releaseDate: '2023-12-28',
161165
supportStatus: 'active',
@@ -164,14 +168,14 @@ describe('generateLanguageSLA', () => {
164168
});
165169

166170
it('new major: sets the new release as active, sets the last tag as maintenance', () => {
167-
generateLanguageSLA(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'dart', {
171+
generateLanguageVersionsHistory(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'dart', {
168172
next: '2.0.0',
169173
current: '1.2.4',
170174
releaseType: 'major',
171175
});
172176

173177
// @ts-expect-error
174-
expect(fullReleaseConfig.sla.dart).toEqual({
178+
expect(fullReleaseConfig.versionsHistory.dart).toEqual({
175179
'1.2.4': {
176180
releaseDate: '2023-12-28',
177181
supportEnd: end.toISOString().split('T')[0],
@@ -186,14 +190,14 @@ describe('generateLanguageSLA', () => {
186190
});
187191

188192
it('new minor: sets the new release as active, sets the last tag as maintenance', () => {
189-
generateLanguageSLA(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'kotlin', {
193+
generateLanguageVersionsHistory(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'kotlin', {
190194
next: '1.3.0',
191195
current: '1.2.4',
192196
releaseType: 'minor',
193197
});
194198

195199
// @ts-expect-error
196-
expect(fullReleaseConfig.sla.kotlin).toEqual({
200+
expect(fullReleaseConfig.versionsHistory.kotlin).toEqual({
197201
'1.2.4': {
198202
releaseDate: '2023-12-28',
199203
supportEnd: end.toISOString().split('T')[0],
@@ -208,14 +212,14 @@ describe('generateLanguageSLA', () => {
208212
});
209213

210214
it('new patch: sets the new release as active, sets the last tag as inactive', () => {
211-
generateLanguageSLA(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'swift', {
215+
generateLanguageVersionsHistory(['1.2.4 Thu Dec 28 15:48:25 2023 +0000'], 'swift', {
212216
next: '1.2.5',
213217
current: '1.2.4',
214218
releaseType: 'patch',
215219
});
216220

217221
// @ts-expect-error
218-
expect(fullReleaseConfig.sla.swift).toEqual({
222+
expect(fullReleaseConfig.versionsHistory.swift).toEqual({
219223
'1.2.4': {
220224
releaseDate: '2023-12-28',
221225
supportEnd: start.toISOString().split('T')[0],

scripts/release/createReleasePR.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ import { getPackageVersionDefault } from '../config.js';
2626
import type { Language } from '../types.js';
2727

2828
import { getFileChanges, getLastReleasedTag } from './common.js';
29-
import { generateSLA } from './sla.js';
3029
import TEXT from './text.js';
3130
import type { Versions, ParsedCommit, Commit, Changelog, Scope, CommitType } from './types.js';
3231
import { updateAPIVersions } from './updateAPIVersions.js';
32+
import { generateVersionsHistory } from './versionsHistory.js';
3333

3434
dotenv.config({ path: path.resolve(ROOT_DIR, '.env') });
3535

@@ -343,9 +343,9 @@ export async function createReleasePR({
343343

344344
const versions = decideReleaseStrategy({ commits: validCommits, releaseType });
345345

346-
// skip anything sla related for now
347-
if (process.env.SLA) {
348-
await generateSLA(versions);
346+
// skip anything versionsHistory related for now
347+
if (process.env.VersionsHistory) {
348+
await generateVersionsHistory(versions);
349349
}
350350

351351
const versionChanges = getVersionChangesText(versions);

0 commit comments

Comments
 (0)