Skip to content

Commit 5d2ba47

Browse files
authored
chore: update release script (#326)
1 parent 6504133 commit 5d2ba47

File tree

3 files changed

+158
-63
lines changed

3 files changed

+158
-63
lines changed

scripts/release/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
"license": "Apache-2.0",
66
"dependencies": {
77
"colors": "^1.4.0",
8+
"external-editor": "^3.1.0",
89
"get-stream": "^5.1.0",
910
"git-raw-commits": "^2.0.2",
11+
"open": "^7.0.2",
1012
"semver": "^6.3.0"
1113
},
1214
"scripts": {

scripts/release/release.js

Lines changed: 72 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ const { spawnSync } = require("child_process"),
2727
const gitRawCommits = require("git-raw-commits"),
2828
semver = require("semver"),
2929
getStream = require("get-stream"),
30+
externalEditor = require("external-editor"),
31+
open = require("open"),
3032
_ = require("colors")
3133
;
3234

@@ -78,35 +80,10 @@ async function main() {
7880
//
7981

8082
console.log(`Updating ${CHANGELOG_PATH} and ${GO_VERSION_PATH}`.blue);
81-
// Generate changelog lines by section
82-
const changelogLines = { feat: [], fix: [] };
83-
commits.forEach(commit => {
84-
const result = COMMIT_REGEX.exec(commit);
85-
if (!result || !(result.groups.type in changelogLines)) {
86-
console.warn(`WARNING: Ignoring commit ${commit}`.yellow);
87-
return;
88-
}
89-
const stdCommit = result.groups;
90-
91-
let line = [`*`, stdCommit.scope ? `**${stdCommit.scope}**:` : "", stdCommit.message, stdCommit.mr ? `([#${stdCommit.mr}](https://github.com/scaleway/scaleway-sdk-go/pull/${stdCommit.mr}))` : ""]
92-
.map(s => s.trim())
93-
.filter(v => v)
94-
.join(" ");
95-
changelogLines[stdCommit.type].push(line);
96-
});
97-
98-
const changelogHeader = `## v${newVersion} (${new Date().toISOString().substring(0, 10)})`;
99-
const changelogSections = [];
100-
if (changelogLines.feat) {
101-
changelogSections.push("### Features\n\n" + changelogLines.feat.join("\n"));
102-
}
103-
if (changelogLines.fix) {
104-
changelogSections.push("### Fixes\n\n" + changelogLines.fix.join("\n"));
105-
}
106-
const changelogBody = changelogSections.join("\n\n");
107-
const changelog = `${changelogHeader}\n\n${changelogBody}`;
83+
const changelog = buildChangelog(newVersion, commits);
84+
changelog.body = externalEditor.edit(changelog.body);
10885

109-
replaceInFile(CHANGELOG_PATH, "# Changelog", "# Changelog\n\n" + changelog + "\n");
86+
replaceInFile(CHANGELOG_PATH, "# Changelog", `# Changelog\n\n${changelog.header}\n\n${changelog.body}\n`);
11087
replaceInFile(GO_VERSION_PATH, /const version[^\n]*\n/, `const version = "v${newVersion}"\n`);
11188
console.log(` Update success`.green);
11289

@@ -117,13 +94,16 @@ async function main() {
11794
git("add", CHANGELOG_PATH, GO_VERSION_PATH);
11895
git("commit", "-m", `chore: release ${newVersion}`);
11996
git("push", "-f", "--set-upstream", TMP_REMOTE, TMP_BRANCH);
120-
121-
await prompt(`Please create an PR here: https://github.com/scaleway/scaleway-sdk-go/pull/new/new-release . Hit enter when its merged .....`.magenta);
122-
123-
console.log("Time to create a github release with the following info\n".blue);
124-
console.log(`Title: v${newVersion}\n\n`.gray);
125-
console.log(`${changelogBody}\n\n`.gray);
126-
await prompt(`You should create a new github release here: https://github.com/scaleway/scaleway-sdk-go/releases/new/ . Hit enter when the new release is created .....`.magenta);
97+
openBrowser("https://github.com/scaleway/scaleway-sdk-go/pull/new/new-release");
98+
await prompt(`Hit enter when its merged .....`.magenta);
99+
100+
console.log("Time to create a github release\n".blue);
101+
openBrowser("https://github.com/scaleway/scaleway-sdk-go/releases/new/", {
102+
tag: `v${newVersion}`,
103+
title: `v${newVersion}`,
104+
body: changelog.body,
105+
});
106+
await prompt(`Hit enter when the new release is created .....`.magenta);
127107

128108
//
129109
// Creating post release commit
@@ -138,11 +118,12 @@ async function main() {
138118
git("checkout", "-b", TMP_BRANCH);
139119
replaceInFile(GO_VERSION_PATH, /const version[^\n]*\n/, `const version = "v${newVersion}+dev"\n`);
140120
git("add", GO_VERSION_PATH);
141-
git("commit", "-m", "chore: post release commit");
121+
git("commit", "-m", `chore: cleanup after v${newVersion} release`);
142122
git("push", "-f", "--set-upstream", TMP_REMOTE, TMP_BRANCH);
143123
git("checkout", "master");
144124
git("branch", "-D", TMP_BRANCH);
145-
await prompt(`Please create an PR here: https://github.com/scaleway/scaleway-sdk-go/pull/new/new-release . Hit enter when its merged .....`.magenta);
125+
openBrowser("https://github.com/scaleway/scaleway-sdk-go/pull/new/new-release");
126+
await prompt(`Hit enter when its merged .....`.magenta);
146127

147128
console.log("Make sure we pull the latest commit from master".blue);
148129
git("pull", TMP_REMOTE, "master");
@@ -183,4 +164,58 @@ function prompt(prompt) {
183164
});
184165
}
185166

167+
function openBrowser(url, query = {}) {
168+
const params = new URLSearchParams(query);
169+
url = `${url}?${params.toString()}`;
170+
console.log(` Opening ${url}`.grey);
171+
open(url);
172+
}
173+
174+
function buildChangelog(newVersion, commits) {
175+
const changelogLines = { feat: [], fix: [], others: [] };
176+
commits.forEach(commit => {
177+
const result = COMMIT_REGEX.exec(commit);
178+
179+
// If commit do not match a valid commit regex we add it in others section without formatting
180+
if (!result) {
181+
console.warn(`WARNING: Malformed commit ${commit}`.yellow);
182+
changelogLines.others.push(commit);
183+
return;
184+
}
185+
const stdCommit = result.groups;
186+
187+
// If commit type is not one of [feat, fix] we add it in the other group. This will probably need further human edition.
188+
if (!(stdCommit.type in changelogLines)) {
189+
stdCommit.scope = [ stdCommit.type, stdCommit.scope ].filter(str => str).join(" - ");
190+
stdCommit.type = "others";
191+
}
192+
193+
const line = [
194+
`*`,
195+
stdCommit.scope ? `**${stdCommit.scope}**:` : "",
196+
stdCommit.message,
197+
stdCommit.mr ? `([#${stdCommit.mr}](https://github.com/scaleway/scaleway-sdk-go/pull/${stdCommit.mr}))` : ""
198+
]
199+
.map(s => s.trim())
200+
.filter(v => v)
201+
.join(" ");
202+
changelogLines[stdCommit.type].push(line);
203+
});
204+
205+
const changelogSections = [];
206+
if (changelogLines.feat) {
207+
changelogSections.push("### Features\n\n" + changelogLines.feat.sort().join("\n"));
208+
}
209+
if (changelogLines.fix) {
210+
changelogSections.push("### Fixes\n\n" + changelogLines.fix.sort().join("\n"));
211+
}
212+
if (changelogLines.others) {
213+
changelogSections.push("### Others\n\n" + changelogLines.others.sort().join("\n"));
214+
}
215+
return {
216+
header: `## v${newVersion} (${new Date().toISOString().substring(0, 10)})`,
217+
body: changelogSections.join("\n\n"),
218+
}
219+
}
220+
186221
main().catch(console.error);

scripts/release/yarn.lock

Lines changed: 84 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ camelcase@^4.1.0:
2626
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
2727
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
2828

29+
chardet@^0.7.0:
30+
version "0.7.0"
31+
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
32+
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
33+
2934
colors@^1.4.0:
3035
version "1.4.0"
3136
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
@@ -77,6 +82,15 @@ error-ex@^1.3.1:
7782
dependencies:
7883
is-arrayish "^0.2.1"
7984

85+
external-editor@^3.1.0:
86+
version "3.1.0"
87+
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
88+
integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
89+
dependencies:
90+
chardet "^0.7.0"
91+
iconv-lite "^0.4.24"
92+
tmp "^0.0.33"
93+
8094
find-up@^2.0.0:
8195
version "2.1.0"
8296
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
@@ -92,26 +106,33 @@ get-stream@^5.1.0:
92106
pump "^3.0.0"
93107

94108
git-raw-commits@^2.0.2:
95-
version "2.0.2"
96-
resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.2.tgz#0ffdb5881e1f9d1ed73edbda47389614543afb99"
97-
integrity sha512-HVvl6J3dx7CS9fWTtyZXA2ejhdq9p/GSU9EEVlJPb2pSgMuD7IWK3dERcUPsJj9SZrJJ6IIB+3Rsjx9FUDdE1Q==
109+
version "2.0.3"
110+
resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.3.tgz#f040e67b8445962d4d168903a9e84c4240c17655"
111+
integrity sha512-SoSsFL5lnixVzctGEi2uykjA7B5I0AhO9x6kdzvGRHbxsa6JSEgrgy1esRKsfOKE1cgyOJ/KDR2Trxu157sb8w==
98112
dependencies:
99113
dargs "^4.0.1"
100114
lodash.template "^4.0.2"
101-
meow "^4.0.0"
115+
meow "^5.0.0"
102116
split2 "^2.0.0"
103117
through2 "^3.0.0"
104118

105119
graceful-fs@^4.1.2:
106-
version "4.2.2"
107-
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
108-
integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
120+
version "4.2.3"
121+
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
122+
integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
109123

110124
hosted-git-info@^2.1.4:
111125
version "2.8.5"
112126
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
113127
integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
114128

129+
iconv-lite@^0.4.24:
130+
version "0.4.24"
131+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
132+
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
133+
dependencies:
134+
safer-buffer ">= 2.1.2 < 3"
135+
115136
indent-string@^3.0.0:
116137
version "3.2.0"
117138
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
@@ -127,11 +148,21 @@ is-arrayish@^0.2.1:
127148
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
128149
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
129150

151+
is-docker@^2.0.0:
152+
version "2.0.0"
153+
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b"
154+
integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==
155+
130156
is-plain-obj@^1.1.0:
131157
version "1.1.0"
132158
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
133159
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
134160

161+
is-wsl@^2.1.1:
162+
version "2.1.1"
163+
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d"
164+
integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==
165+
135166
isarray@~1.0.0:
136167
version "1.0.0"
137168
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -198,20 +229,20 @@ map-obj@^2.0.0:
198229
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
199230
integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk=
200231

201-
meow@^4.0.0:
202-
version "4.0.1"
203-
resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975"
204-
integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==
232+
meow@^5.0.0:
233+
version "5.0.0"
234+
resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4"
235+
integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==
205236
dependencies:
206237
camelcase-keys "^4.0.0"
207238
decamelize-keys "^1.0.0"
208239
loud-rejection "^1.0.0"
209-
minimist "^1.1.3"
210240
minimist-options "^3.0.1"
211241
normalize-package-data "^2.3.4"
212242
read-pkg-up "^3.0.0"
213243
redent "^2.0.0"
214244
trim-newlines "^2.0.0"
245+
yargs-parser "^10.0.0"
215246

216247
minimist-options@^3.0.1:
217248
version "3.0.2"
@@ -221,11 +252,6 @@ minimist-options@^3.0.1:
221252
arrify "^1.0.1"
222253
is-plain-obj "^1.1.0"
223254

224-
minimist@^1.1.3:
225-
version "1.2.0"
226-
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
227-
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
228-
229255
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
230256
version "2.5.0"
231257
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@@ -248,6 +274,19 @@ once@^1.3.1, once@^1.4.0:
248274
dependencies:
249275
wrappy "1"
250276

277+
open@^7.0.2:
278+
version "7.0.2"
279+
resolved "https://registry.yarnpkg.com/open/-/open-7.0.2.tgz#fb3681f11f157f2361d2392307548ca1792960e8"
280+
integrity sha512-70E/pFTPr7nZ9nLDPNTcj3IVqnNvKuP4VsBmoKV9YGTnChe0mlS3C4qM7qKarhZ8rGaHKLfo+vBTHXDp6ZSyLQ==
281+
dependencies:
282+
is-docker "^2.0.0"
283+
is-wsl "^2.1.1"
284+
285+
os-tmpdir@~1.0.2:
286+
version "1.0.2"
287+
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
288+
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
289+
251290
p-limit@^1.1.0:
252291
version "1.3.0"
253292
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
@@ -333,18 +372,18 @@ read-pkg@^3.0.0:
333372
path-type "^3.0.0"
334373

335374
"readable-stream@2 || 3":
336-
version "3.4.0"
337-
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
338-
integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
375+
version "3.6.0"
376+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
377+
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
339378
dependencies:
340379
inherits "^2.0.3"
341380
string_decoder "^1.1.1"
342381
util-deprecate "^1.0.1"
343382

344383
readable-stream@~2.3.6:
345-
version "2.3.6"
346-
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
347-
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
384+
version "2.3.7"
385+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
386+
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
348387
dependencies:
349388
core-util-is "~1.0.0"
350389
inherits "~2.0.3"
@@ -363,9 +402,9 @@ redent@^2.0.0:
363402
strip-indent "^2.0.0"
364403

365404
resolve@^1.10.0:
366-
version "1.12.0"
367-
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
368-
integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
405+
version "1.15.1"
406+
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
407+
integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
369408
dependencies:
370409
path-parse "^1.0.6"
371410

@@ -379,6 +418,11 @@ safe-buffer@~5.2.0:
379418
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
380419
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
381420

421+
"safer-buffer@>= 2.1.2 < 3":
422+
version "2.1.2"
423+
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
424+
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
425+
382426
"semver@2 || 3 || 4 || 5":
383427
version "5.7.1"
384428
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -466,6 +510,13 @@ through2@^3.0.0:
466510
dependencies:
467511
readable-stream "2 || 3"
468512

513+
tmp@^0.0.33:
514+
version "0.0.33"
515+
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
516+
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
517+
dependencies:
518+
os-tmpdir "~1.0.2"
519+
469520
trim-newlines@^2.0.0:
470521
version "2.0.0"
471522
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20"
@@ -493,3 +544,10 @@ xtend@~4.0.1:
493544
version "4.0.2"
494545
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
495546
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
547+
548+
yargs-parser@^10.0.0:
549+
version "10.1.0"
550+
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
551+
integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==
552+
dependencies:
553+
camelcase "^4.1.0"

0 commit comments

Comments
 (0)