Replace enquirer with @clack/prompts (#19975)
This commit is contained in:
1 parent
3903c6a4eb
commit
338310e438
3 files changed
+95
-58
No files matched your search
+1
-1
@@ -135,6 +135,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/generator": "8.0.0",
|
"@babel/generator": "8.0.0",
|
||||||
|
"@clack/prompts": "1.7.0",
|
||||||
"@eslint/js": "10.0.1",
|
"@eslint/js": "10.0.1",
|
||||||
"@stylistic/eslint-plugin": "5.10.0",
|
"@stylistic/eslint-plugin": "5.10.0",
|
||||||
"@types/jsesc": "3.0.3",
|
"@types/jsesc": "3.0.3",
|
||||||
@@ -149,7 +150,6 @@
|
|||||||
"commonmark-test-suite": "0.1.0",
|
"commonmark-test-suite": "0.1.0",
|
||||||
"cross-env": "10.1.0",
|
"cross-env": "10.1.0",
|
||||||
"cspell": "10.1.1",
|
"cspell": "10.1.1",
|
||||||
"enquirer": "2.4.1",
|
|
||||||
"esbuild": "0.28.2",
|
"esbuild": "0.28.2",
|
||||||
"esbuild-visualizer": "0.7.0",
|
"esbuild-visualizer": "0.7.0",
|
||||||
"eslint": "10.9.1",
|
"eslint": "10.9.1",
|
||||||
|
|||||||
@@ -10,46 +10,70 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import fs from "node:fs/promises";
|
import fs from "node:fs/promises";
|
||||||
import enquirer from "enquirer";
|
import * as prompts from "@clack/prompts";
|
||||||
import openEditor from "open-editor";
|
import openEditor from "open-editor";
|
||||||
import { CHANGELOG_CATEGORIES } from "./utilities/changelog.js";
|
import { categories } from "./utilities/changelog.js";
|
||||||
|
|
||||||
const prNumberPrompt = new enquirer.NumberPrompt({
|
async function generateChangelog() {
|
||||||
message: "Input your Pull Request number:",
|
let prNumber = await prompts.text({
|
||||||
});
|
message: "Pull request number:",
|
||||||
const prNumber = await prNumberPrompt.run();
|
initialValue: "",
|
||||||
|
validate(value) {
|
||||||
|
value = value.trim();
|
||||||
|
|
||||||
const categoryPrompt = new enquirer.AutoComplete({
|
if (!value) {
|
||||||
message: "Input category of your Pull Request:",
|
return "Pull request number is required.";
|
||||||
limit: CHANGELOG_CATEGORIES.length,
|
}
|
||||||
// The array passed to `choices` will be broken, so copy it.
|
|
||||||
choices: [...CHANGELOG_CATEGORIES],
|
|
||||||
});
|
|
||||||
const category = (await categoryPrompt.run()).trim();
|
|
||||||
|
|
||||||
if (!prNumber || !category) {
|
if (!/^\d{4,}$/.test(value)) {
|
||||||
throw new Error("Two args are required.");
|
return "Invalid pull request number.";
|
||||||
}
|
}
|
||||||
assertCategory(category);
|
},
|
||||||
|
withGuide: false,
|
||||||
|
});
|
||||||
|
|
||||||
const { title, user } = await getPr(prNumber);
|
if (prompts.isCancel(prNumber)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const content = await createChangelog(title, user, prNumber, category);
|
const category = await prompts.autocomplete({
|
||||||
|
message: "Category:",
|
||||||
|
options: categories.map((category) => ({
|
||||||
|
value: category.dir,
|
||||||
|
label: category.title,
|
||||||
|
})),
|
||||||
|
withGuide: false,
|
||||||
|
});
|
||||||
|
|
||||||
const file = await addNewChangelog(prNumber, category, content);
|
if (prompts.isCancel(category)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const relativePath = file.href.slice(
|
prNumber = prNumber.trim();
|
||||||
new URL("../", import.meta.url).href.length,
|
|
||||||
);
|
|
||||||
|
|
||||||
console.log("Generated changelog file: " + relativePath);
|
const { title, user } = await getPr(prNumber);
|
||||||
|
|
||||||
const shouldOpenChangelog = await new enquirer.Confirm({
|
const content = await createChangelog(title, user, prNumber, category);
|
||||||
message: "Open changelog file?",
|
|
||||||
initial: true,
|
const file = await addNewChangelog(prNumber, category, content);
|
||||||
}).run();
|
|
||||||
|
const relativePath = file.href.slice(
|
||||||
|
new URL("../", import.meta.url).href.length,
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log("Generated changelog file: " + relativePath);
|
||||||
|
|
||||||
|
const shouldOpenChangelog = await prompts.confirm({
|
||||||
|
message: "Open changelog file?",
|
||||||
|
initialValue: true,
|
||||||
|
vertical: true,
|
||||||
|
withGuide: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (prompts.isCancel(shouldOpenChangelog) || !shouldOpenChangelog) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (shouldOpenChangelog) {
|
|
||||||
try {
|
try {
|
||||||
openEditor([file]);
|
openEditor([file]);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -58,7 +82,7 @@ if (shouldOpenChangelog) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {number} prNumber
|
* @param {string} prNumber
|
||||||
* @returns {Promise<{ title: string; user: string }>}
|
* @returns {Promise<{ title: string; user: string }>}
|
||||||
*/
|
*/
|
||||||
async function getPr(prNumber) {
|
async function getPr(prNumber) {
|
||||||
@@ -199,12 +223,4 @@ function generateComment(syntax, comment) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
await generateChangelog();
|
||||||
* @param {unknown}
|
|
||||||
* @returns {void}
|
|
||||||
*/
|
|
||||||
function assertCategory(category) {
|
|
||||||
if (!CHANGELOG_CATEGORIES.includes(category)) {
|
|
||||||
throw new Error(`${category} is invalid category`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -507,6 +507,28 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@clack/core@npm:1.4.3":
|
||||||
|
version: 1.4.3
|
||||||
|
resolution: "@clack/core@npm:1.4.3"
|
||||||
|
dependencies:
|
||||||
|
fast-wrap-ansi: "npm:^0.2.0"
|
||||||
|
sisteransi: "npm:^1.0.5"
|
||||||
|
checksum: 10/9d875718cb161e0eca97c3ed3ba3063211436c4224a04556b840e045f18505c8fdb645754d9459181069b3a3b6699962d0f47e38e2502cb0acfef1649b3557b3
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@clack/prompts@npm:1.7.0":
|
||||||
|
version: 1.7.0
|
||||||
|
resolution: "@clack/prompts@npm:1.7.0"
|
||||||
|
dependencies:
|
||||||
|
"@clack/core": "npm:1.4.3"
|
||||||
|
fast-string-width: "npm:^3.0.2"
|
||||||
|
fast-wrap-ansi: "npm:^0.2.0"
|
||||||
|
sisteransi: "npm:^1.0.5"
|
||||||
|
checksum: 10/2bfc89d6755a1e10166a3b7a6cc883a09c1d4d82c08fbe98763284d522f256a58ed20c5ee4ab36f2a6e06bc1b3f0c16b02657159f7d593dab12c55260755f0c2
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@cspell/cspell-bundled-dicts@npm:10.1.1":
|
"@cspell/cspell-bundled-dicts@npm:10.1.1":
|
||||||
version: 10.1.1
|
version: 10.1.1
|
||||||
resolution: "@cspell/cspell-bundled-dicts@npm:10.1.1"
|
resolution: "@cspell/cspell-bundled-dicts@npm:10.1.1"
|
||||||
@@ -3309,13 +3331,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ansi-colors@npm:^4.1.1":
|
|
||||||
version: 4.1.3
|
|
||||||
resolution: "ansi-colors@npm:4.1.3"
|
|
||||||
checksum: 10/43d6e2fc7b1c6e4dc373de708ee76311ec2e0433e7e8bd3194e7ff123ea6a747428fc61afdcf5969da5be3a5f0fd054602bec56fc0ebe249ce2fcde6e649e3c2
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"ansi-escapes@npm:^4.3.2":
|
"ansi-escapes@npm:^4.3.2":
|
||||||
version: 4.3.2
|
version: 4.3.2
|
||||||
resolution: "ansi-escapes@npm:4.3.2"
|
resolution: "ansi-escapes@npm:4.3.2"
|
||||||
@@ -4414,16 +4429,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"enquirer@npm:2.4.1":
|
|
||||||
version: 2.4.1
|
|
||||||
resolution: "enquirer@npm:2.4.1"
|
|
||||||
dependencies:
|
|
||||||
ansi-colors: "npm:^4.1.1"
|
|
||||||
strip-ansi: "npm:^6.0.1"
|
|
||||||
checksum: 10/b3726486cd98f0d458a851a03326a2a5dd4d84f37ff94ff2a2960c915e0fc865865da3b78f0877dc36ac5c1189069eca603e82ec63d5bc6b0dd9985bf6426d7a
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"entities@npm:^8.0.0":
|
"entities@npm:^8.0.0":
|
||||||
version: 8.0.0
|
version: 8.0.0
|
||||||
resolution: "entities@npm:8.0.0"
|
resolution: "entities@npm:8.0.0"
|
||||||
@@ -5052,6 +5057,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"fast-wrap-ansi@npm:^0.2.0":
|
||||||
|
version: 0.2.2
|
||||||
|
resolution: "fast-wrap-ansi@npm:0.2.2"
|
||||||
|
dependencies:
|
||||||
|
fast-string-width: "npm:^3.0.2"
|
||||||
|
checksum: 10/c72272e4ee9c047ec4609adea9beb779f058e0aaee37d9e99d2306c401b34ad2b158ba6969860e35f8be7a0b0ba7512b71315d403e58a45a9f0eba0dc5b4befd
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"fastq@npm:^1.6.0":
|
"fastq@npm:^1.6.0":
|
||||||
version: 1.20.2
|
version: 1.20.2
|
||||||
resolution: "fastq@npm:1.20.2"
|
resolution: "fastq@npm:1.20.2"
|
||||||
@@ -8285,6 +8299,7 @@ __metadata:
|
|||||||
"@braindb/mdast-util-wiki-link": "npm:0.2.0"
|
"@braindb/mdast-util-wiki-link": "npm:0.2.0"
|
||||||
"@braindb/micromark-extension-wiki-link": "npm:0.1.0"
|
"@braindb/micromark-extension-wiki-link": "npm:0.1.0"
|
||||||
"@bybrave/json5": "npm:3.1.0"
|
"@bybrave/json5": "npm:3.1.0"
|
||||||
|
"@clack/prompts": "npm:1.7.0"
|
||||||
"@eslint/js": "npm:10.0.1"
|
"@eslint/js": "npm:10.0.1"
|
||||||
"@glimmer/syntax": "npm:0.95.0"
|
"@glimmer/syntax": "npm:0.95.0"
|
||||||
"@prettier/cli": "npm:0.12.0"
|
"@prettier/cli": "npm:0.12.0"
|
||||||
@@ -8321,7 +8336,6 @@ __metadata:
|
|||||||
diff: "npm:9.0.0"
|
diff: "npm:9.0.0"
|
||||||
editorconfig-without-wasm: "npm:0.0.7"
|
editorconfig-without-wasm: "npm:0.0.7"
|
||||||
emoji-regex: "npm:10.6.0"
|
emoji-regex: "npm:10.6.0"
|
||||||
enquirer: "npm:2.4.1"
|
|
||||||
esbuild: "npm:0.28.2"
|
esbuild: "npm:0.28.2"
|
||||||
esbuild-visualizer: "npm:0.7.0"
|
esbuild-visualizer: "npm:0.7.0"
|
||||||
escape-string-regexp: "npm:5.0.0"
|
escape-string-regexp: "npm:5.0.0"
|
||||||
@@ -8816,6 +8830,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"sisteransi@npm:^1.0.5":
|
||||||
|
version: 1.0.5
|
||||||
|
resolution: "sisteransi@npm:1.0.5"
|
||||||
|
checksum: 10/aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"slash@npm:^3.0.0":
|
"slash@npm:^3.0.0":
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
resolution: "slash@npm:3.0.0"
|
resolution: "slash@npm:3.0.0"
|
||||||
|
|||||||
Reference in new issue
Block a user