Skip to content

Commit d86b74f

Browse files
Merge pull request #3206 from vuestorefront/v2
chore: automatic sync v2->v2-develop
2 parents b0d65a3 + e065ca6 commit d86b74f

File tree

4 files changed

+251
-11
lines changed

4 files changed

+251
-11
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -301,11 +301,10 @@ jobs:
301301
# refresh token before Saturday, May 25, 2024
302302
NPM_TOKEN: ${{ secrets.NPM_RELEASE_TOKEN }}
303303
NODE_AUTH_TOKEN: ${{ secrets.NPM_RELEASE_TOKEN }}
304-
- name: Create Release Pull Request
305-
# Create release notes
306-
uses: changesets/action@v1
304+
- name: Create Release Notes
307305
env:
308306
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
307+
run: node releaseNotes.mjs
309308
- name: Create PR to v2-develop branch
310309
env:
311310
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,22 @@
6060
"@commitlint/cli": "^17.0.0",
6161
"@commitlint/config-conventional": "^17.0.0",
6262
"@frsource/frs-replace": "^4.1.1",
63+
"@octokit/core": "^6.1.2",
6364
"@storefront-ui/typescript-config": "workspace:*",
6465
"@vue-storefront/prettier-config": "^2.0.0-rc.1",
6566
"commitizen": "^4.2.5",
6667
"concurrently": "^8.2.2",
6768
"husky": "^9.0.11",
6869
"hygen": "^6.2.8",
70+
"mdast-util-to-string": "^4.0.0",
6971
"prettier": "latest",
72+
"remark-parse": "^11.0.0",
73+
"remark-stringify": "^11.0.0",
7074
"rimraf": "^5.0.0",
7175
"tailwindcss": "^3.4.3",
7276
"turbo": "latest",
7377
"typescript": "^5.4.5",
78+
"unified": "^11.0.4",
7479
"wait-on": "^7.0.1"
7580
},
7681
"engines": {

releaseNotes.mjs

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import { Octokit } from '@octokit/core';
2+
import { unified } from 'unified';
3+
import remarkParse from 'remark-parse';
4+
import remarkStringify from 'remark-stringify';
5+
import { toString } from 'mdast-util-to-string';
6+
import { readFileSync } from 'node:fs';
7+
import { join } from 'node:path';
8+
9+
const OWNER = 'vuestorefront';
10+
const REPO = 'storefront-ui';
11+
const octokit = new Octokit({ auth: process.env['GITHUB_TOKEN'] });
12+
13+
const BumpLevels = {
14+
dep: 0,
15+
patch: 1,
16+
minor: 2,
17+
major: 3,
18+
};
19+
20+
// Implementation copied from changeset and its generation release notes https://github.com/changesets/action/blob/main/src/utils.ts#L37
21+
function getChangelogEntry(changelog, version) {
22+
let ast = unified().use(remarkParse).parse(changelog);
23+
24+
let highestLevel = BumpLevels.dep;
25+
26+
let nodes = ast.children;
27+
let headingStartInfo;
28+
let endIndex;
29+
30+
for (let i = 0; i < nodes.length; i++) {
31+
let node = nodes[i];
32+
if (node.type === 'heading') {
33+
let stringified = toString(node);
34+
let match = stringified.toLowerCase().match(/(major|minor|patch)/);
35+
if (match !== null) {
36+
let level = BumpLevels[match[0]];
37+
highestLevel = Math.max(level, highestLevel);
38+
}
39+
if (headingStartInfo === undefined && stringified === version) {
40+
headingStartInfo = {
41+
index: i,
42+
depth: node.depth,
43+
};
44+
continue;
45+
}
46+
if (endIndex === undefined && headingStartInfo !== undefined && headingStartInfo.depth === node.depth) {
47+
endIndex = i;
48+
break;
49+
}
50+
}
51+
}
52+
if (headingStartInfo) {
53+
ast.children = ast.children.slice(headingStartInfo.index + 1, endIndex);
54+
}
55+
return {
56+
content: unified().use(remarkStringify).stringify(ast),
57+
highestLevel: highestLevel,
58+
};
59+
}
60+
61+
const data = await octokit.request(`GET /repos/${OWNER}/${REPO}/commits`, {
62+
owner: OWNER,
63+
repo: REPO,
64+
sha: 'v2',
65+
headers: {
66+
'X-GitHub-Api-Version': '2022-11-28',
67+
},
68+
});
69+
70+
const commitSha = data.data[0].sha;
71+
const commitBody = await octokit.request(`GET /repos/${OWNER}/${REPO}/commits/${commitSha}`, {
72+
owner: OWNER,
73+
repo: REPO,
74+
ref: commitSha,
75+
headers: {
76+
'X-GitHub-Api-Version': '2022-11-28',
77+
},
78+
});
79+
80+
const allChangelogFiles = commitBody.data.files.filter((file) => file.filename.endsWith('CHANGELOG.md'));
81+
82+
if (!allChangelogFiles.length) {
83+
console.log('No CHANGELOG file has been found');
84+
} else {
85+
await Promise.all(
86+
allChangelogFiles.map(async (changelogFile) => {
87+
const changelogFilePath = changelogFile.filename;
88+
const updatedPackageDir = changelogFilePath.replace('/CHANGELOG.md', '');
89+
const packageJsonPath = join(updatedPackageDir, 'package.json');
90+
91+
const changelogContent = readFileSync(changelogFilePath, 'utf-8');
92+
const packageJsonContent = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
93+
94+
const pkgName = packageJsonContent.name;
95+
const pkgVersion = packageJsonContent.version;
96+
const tagName = `${pkgName}@${pkgVersion}`;
97+
98+
let changelogEntry = getChangelogEntry(changelogContent, pkgVersion);
99+
100+
try {
101+
await octokit.request(`POST /repos/${OWNER}/${REPO}/releases`, {
102+
owner: OWNER,
103+
repo: REPO,
104+
tag_name: tagName,
105+
target_commitish: commitSha,
106+
name: tagName,
107+
body: changelogEntry.content,
108+
draft: false,
109+
prerelease: pkgVersion.includes('-'),
110+
generate_release_notes: false,
111+
headers: {
112+
'X-GitHub-Api-Version': '2022-11-28',
113+
},
114+
});
115+
} catch (e) {
116+
console.log(e);
117+
}
118+
119+
console.log(`Release notes for ${tagName} has been created 🎉`);
120+
}),
121+
);
122+
}

yarn.lock

Lines changed: 122 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3554,6 +3554,86 @@ __metadata:
35543554
languageName: node
35553555
linkType: hard
35563556

3557+
"@octokit/auth-token@npm:^5.0.0":
3558+
version: 5.1.1
3559+
resolution: "@octokit/auth-token@npm:5.1.1"
3560+
checksum: b39516dda44aeced0326227c53aade621effe1d59c4b0f48ebe2b9fd32b5156e02705bcb2fb1bf48b11f26cc6aff1a0683c32c3d5424e0118dae6596e431d489
3561+
languageName: node
3562+
linkType: hard
3563+
3564+
"@octokit/core@npm:^6.1.2":
3565+
version: 6.1.2
3566+
resolution: "@octokit/core@npm:6.1.2"
3567+
dependencies:
3568+
"@octokit/auth-token": ^5.0.0
3569+
"@octokit/graphql": ^8.0.0
3570+
"@octokit/request": ^9.0.0
3571+
"@octokit/request-error": ^6.0.1
3572+
"@octokit/types": ^13.0.0
3573+
before-after-hook: ^3.0.2
3574+
universal-user-agent: ^7.0.0
3575+
checksum: e794fb11b3942f55033f4cf6c0914953fd974587309498e8709c428660fa5c098334d83af5e41457dbe67d92d70a8b559c6cc00457d6c95290fa6c9e1d4bfc42
3576+
languageName: node
3577+
linkType: hard
3578+
3579+
"@octokit/endpoint@npm:^10.0.0":
3580+
version: 10.1.1
3581+
resolution: "@octokit/endpoint@npm:10.1.1"
3582+
dependencies:
3583+
"@octokit/types": ^13.0.0
3584+
universal-user-agent: ^7.0.2
3585+
checksum: fde158f40dc9a88e92a8ac1d347a54599aa5715ec24045be9cb8ff8decb3c17b63c91eca1bab12dfe0e0cd37433127dd05cd05db14a719dca749bc56093aa915
3586+
languageName: node
3587+
linkType: hard
3588+
3589+
"@octokit/graphql@npm:^8.0.0":
3590+
version: 8.1.1
3591+
resolution: "@octokit/graphql@npm:8.1.1"
3592+
dependencies:
3593+
"@octokit/request": ^9.0.0
3594+
"@octokit/types": ^13.0.0
3595+
universal-user-agent: ^7.0.0
3596+
checksum: 07239666b0ca38a7d8c581570b544ee9fd1a2616c8dd436af31879662b3345c44ed52e3d7b311840a1c5772a23f02caf7585aca56f36e50f38f0207a87577a9c
3597+
languageName: node
3598+
linkType: hard
3599+
3600+
"@octokit/openapi-types@npm:^22.2.0":
3601+
version: 22.2.0
3602+
resolution: "@octokit/openapi-types@npm:22.2.0"
3603+
checksum: eca41feac2b83298e0d95e253ac1c5b6d65155ac57f65c5fd8d4a485d9728922d85ff4bee0e815a1f3a5421311db092bdb6da9d6104a1b1843d8b274bcad9630
3604+
languageName: node
3605+
linkType: hard
3606+
3607+
"@octokit/request-error@npm:^6.0.1":
3608+
version: 6.1.1
3609+
resolution: "@octokit/request-error@npm:6.1.1"
3610+
dependencies:
3611+
"@octokit/types": ^13.0.0
3612+
checksum: cae7bc4078629a02edcf35977f496a4b943e730165f6d7828795073f99a1d884ac67343b02eff69e553a5057765e466d70ddd9d266787f505aa29018858ab06d
3613+
languageName: node
3614+
linkType: hard
3615+
3616+
"@octokit/request@npm:^9.0.0":
3617+
version: 9.1.1
3618+
resolution: "@octokit/request@npm:9.1.1"
3619+
dependencies:
3620+
"@octokit/endpoint": ^10.0.0
3621+
"@octokit/request-error": ^6.0.1
3622+
"@octokit/types": ^13.1.0
3623+
universal-user-agent: ^7.0.2
3624+
checksum: 0c41654911c217eb2892ce6c9c273cc2139e5510b025c71e72e1528f0d8bad2a9e578e5b305595599f2e1cb630c1812cd7d9e4f6d16a63007a7d1745f1c682ce
3625+
languageName: node
3626+
linkType: hard
3627+
3628+
"@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0":
3629+
version: 13.5.0
3630+
resolution: "@octokit/types@npm:13.5.0"
3631+
dependencies:
3632+
"@octokit/openapi-types": ^22.2.0
3633+
checksum: 8e92f2b145b3c28a35312f93714245824a7b6b7353caa88edfdc85fc2ed4108321ed0c3988001ea53449fbb212febe0e8e9582744e85c3574dabe9d0441af5a0
3634+
languageName: node
3635+
linkType: hard
3636+
35573637
"@open-draft/deferred-promise@npm:^2.2.0":
35583638
version: 2.2.0
35593639
resolution: "@open-draft/deferred-promise@npm:2.2.0"
@@ -4619,17 +4699,22 @@ __metadata:
46194699
"@commitlint/cli": ^17.0.0
46204700
"@commitlint/config-conventional": ^17.0.0
46214701
"@frsource/frs-replace": ^4.1.1
4702+
"@octokit/core": ^6.1.2
46224703
"@storefront-ui/typescript-config": "workspace:*"
46234704
"@vue-storefront/prettier-config": ^2.0.0-rc.1
46244705
commitizen: ^4.2.5
46254706
concurrently: ^8.2.2
46264707
husky: ^9.0.11
46274708
hygen: ^6.2.8
4709+
mdast-util-to-string: ^4.0.0
46284710
prettier: latest
4711+
remark-parse: ^11.0.0
4712+
remark-stringify: ^11.0.0
46294713
rimraf: ^5.0.0
46304714
tailwindcss: ^3.4.3
46314715
turbo: latest
46324716
typescript: ^5.4.5
4717+
unified: ^11.0.4
46334718
wait-on: ^7.0.1
46344719
languageName: unknown
46354720
linkType: soft
@@ -7560,6 +7645,13 @@ __metadata:
75607645
languageName: node
75617646
linkType: hard
75627647

7648+
"before-after-hook@npm:^3.0.2":
7649+
version: 3.0.2
7650+
resolution: "before-after-hook@npm:3.0.2"
7651+
checksum: 5f76a9d31909f7f1f7125b7e017ff018799308f5c1fc5a5bfeba9986149da77e6a5cdde0d151671cf374a7fa6452533237bb1de62dfd6c235c20e7c61cc9569d
7652+
languageName: node
7653+
linkType: hard
7654+
75637655
"better-path-resolve@npm:1.0.0":
75647656
version: 1.0.0
75657657
resolution: "better-path-resolve@npm:1.0.0"
@@ -10121,15 +10213,15 @@ __metadata:
1012110213
linkType: hard
1012210214

1012310215
"engine.io-client@npm:~6.5.2":
10124-
version: 6.5.4
10125-
resolution: "engine.io-client@npm:6.5.4"
10216+
version: 6.5.3
10217+
resolution: "engine.io-client@npm:6.5.3"
1012610218
dependencies:
1012710219
"@socket.io/component-emitter": ~3.1.0
1012810220
debug: ~4.3.1
1012910221
engine.io-parser: ~5.2.1
10130-
ws: ~8.17.1
10222+
ws: ~8.11.0
1013110223
xmlhttprequest-ssl: ~2.0.0
10132-
checksum: 32955326f7d81bbc8fd40aaf14972ec46956c0a6b08752e1ceb2de37bfb7fc2e4e8decbefad1a8092fad0ef29379fa0e95531ae2e10cb61facb2ef1200ef8752
10224+
checksum: a72596fae99afbdb899926fccdb843f8fa790c69085b881dde121285a6935da2c2c665ebe88e0e6aa4285637782df84ac882084ff4892ad2430b059fc0045db0
1013310225
languageName: node
1013410226
linkType: hard
1013510227

@@ -22721,6 +22813,13 @@ __metadata:
2272122813
languageName: node
2272222814
linkType: hard
2272322815

22816+
"universal-user-agent@npm:^7.0.0, universal-user-agent@npm:^7.0.2":
22817+
version: 7.0.2
22818+
resolution: "universal-user-agent@npm:7.0.2"
22819+
checksum: 3f02cb6de0bb9fbaf379566bd0320d8e46af6e4358a2e88fce7e70687ed7b48b37f479d728bb22f4204a518e363f3038ac4841c033af1ee2253f6428a6c67e53
22820+
languageName: node
22821+
linkType: hard
22822+
2272422823
"universalify@npm:^0.1.0":
2272522824
version: 0.1.2
2272622825
resolution: "universalify@npm:0.1.2"
@@ -23912,9 +24011,9 @@ __metadata:
2391224011
languageName: node
2391324012
linkType: hard
2391424013

23915-
"ws@npm:^8.13.0, ws@npm:^8.16.0, ws@npm:~8.17.1":
23916-
version: 8.17.1
23917-
resolution: "ws@npm:8.17.1"
24014+
"ws@npm:^8.13.0, ws@npm:^8.16.0":
24015+
version: 8.17.0
24016+
resolution: "ws@npm:8.17.0"
2391824017
peerDependencies:
2391924018
bufferutil: ^4.0.1
2392024019
utf-8-validate: ">=5.0.2"
@@ -23923,7 +24022,22 @@ __metadata:
2392324022
optional: true
2392424023
utf-8-validate:
2392524024
optional: true
23926-
checksum: 442badcce1f1178ec87a0b5372ae2e9771e07c4929a3180321901f226127f252441e8689d765aa5cfba5f50ac60dd830954afc5aeae81609aefa11d3ddf5cecf
24025+
checksum: 147ef9eab0251364e1d2c55338ad0efb15e6913923ccbfdf20f7a8a6cb8f88432bcd7f4d8f66977135bfad35575644f9983201c1a361019594a4e53977bf6d4e
24026+
languageName: node
24027+
linkType: hard
24028+
24029+
"ws@npm:~8.11.0":
24030+
version: 8.11.0
24031+
resolution: "ws@npm:8.11.0"
24032+
peerDependencies:
24033+
bufferutil: ^4.0.1
24034+
utf-8-validate: ^5.0.2
24035+
peerDependenciesMeta:
24036+
bufferutil:
24037+
optional: true
24038+
utf-8-validate:
24039+
optional: true
24040+
checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67
2392724041
languageName: node
2392824042
linkType: hard
2392924043

0 commit comments

Comments
 (0)