Migrate inquirer to @inquirer/prompts (#8592)

This commit is contained in:
LitoMore 2023-05-03 10:16:53 +08:00 committed by GitHub
parent 747901a4d7
commit a9a226c58a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 69 additions and 84 deletions

View File

@ -60,13 +60,13 @@
"url": "https://opencollective.com/simple-icons" "url": "https://opencollective.com/simple-icons"
}, },
"devDependencies": { "devDependencies": {
"@inquirer/prompts": "^1.0.0",
"chalk": "5.2.0", "chalk": "5.2.0",
"editorconfig-checker": "5.0.1", "editorconfig-checker": "5.0.1",
"esbuild": "0.17.18", "esbuild": "0.17.18",
"fake-diff": "1.0.0", "fake-diff": "1.0.0",
"get-relative-luminance": "1.0.0", "get-relative-luminance": "1.0.0",
"husky": "8.0.3", "husky": "8.0.3",
"inquirer": "9.2.0",
"is-ci": "3.0.1", "is-ci": "3.0.1",
"jsonschema": "1.4.1", "jsonschema": "1.4.1",
"mocha": "10.2.0", "mocha": "10.2.0",

View File

@ -1,5 +1,5 @@
import inquirer from 'inquirer';
import chalk from 'chalk'; import chalk from 'chalk';
import { input, confirm, checkbox } from '@inquirer/prompts';
import getRelativeLuminance from 'get-relative-luminance'; import getRelativeLuminance from 'get-relative-luminance';
import { import {
URL_REGEX, URL_REGEX,
@ -83,96 +83,81 @@ const getIconDataFromAnswers = (answers) => ({
: {}), : {}),
}); });
const dataPrompt = [ const answers = {};
{
type: 'input', answers.title = await input({
name: 'title',
message: 'Title', message: 'Title',
validate: titleValidator, validate: titleValidator,
}, });
{
type: 'input', answers.hex = await input({
name: 'hex',
message: 'Hex', message: 'Hex',
validate: hexValidator, validate: hexValidator,
filter: (text) => normalizeColor(text), filter: (text) => normalizeColor(text),
transformer: hexTransformer, transformer: hexTransformer,
}, });
{
type: 'input', answers.source = await input({
name: 'source',
message: 'Source', message: 'Source',
validate: sourceValidator, validate: sourceValidator,
}, });
{
type: 'confirm', answers.hasGuidelines = await confirm({
name: 'hasGuidelines',
message: 'The icon has brand guidelines?', message: 'The icon has brand guidelines?',
}, });
{
type: 'input', if (answers.hasGuidelines) {
name: 'guidelines', answers.guidelines = await input({
message: 'Guidelines', message: 'Guidelines',
validate: sourceValidator, validate: sourceValidator,
when: ({ hasGuidelines }) => hasGuidelines, });
}, }
{
type: 'confirm', answers.hasLicense = await confirm({
name: 'hasLicense',
message: 'The icon has brand license?', message: 'The icon has brand license?',
}, });
{
type: 'input', if (answers.hasLicense) {
name: 'licenseType', answers.licenseType = await input({
message: 'License type', message: 'License type',
validate: (text) => Boolean(text), validate: (text) => Boolean(text),
when: ({ hasLicense }) => hasLicense, });
},
{ answers.licenseUrl = await input({
type: 'input', message: 'License URL' + chalk.reset(' (optional)'),
name: 'licenseUrl',
message: 'License URL',
suffix: ' (optional)',
validate: (text) => !Boolean(text) || sourceValidator(text), validate: (text) => !Boolean(text) || sourceValidator(text),
when: ({ hasLicense }) => hasLicense, });
}, }
{
type: 'confirm', answers.hasAliases = await confirm({
name: 'hasAliases', message: 'This icon has brands aliases?',
message: 'The icon has brand aliases?',
default: false, default: false,
}, });
{
type: 'checkbox', if (answers.hasAliases) {
name: 'aliasesTypes', answers.aliasesTypes = await checkbox({
message: 'What types of aliases do you want to add?', message: 'What types of aliases do you want to add?',
choices: aliasesChoices, choices: aliasesChoices,
when: ({ hasAliases }) => hasAliases, });
},
...aliasesChoices.map((x) => ({ for (const x of aliasesChoices) {
type: 'input', if (!answers?.aliasesTypes?.includes(x.value)) continue;
name: `${x.value}AliasesList`, answers[`${x.value}AliasesList`] = await input({
message: x.value, message: x.value + chalk.reset(' (separate with commas)'),
suffix: ' (separate with commas)',
validate: (text) => Boolean(text), validate: (text) => Boolean(text),
transformer: aliasesTransformer, transformer: aliasesTransformer,
when: (answers) => answers?.aliasesTypes?.includes(x.value), });
})), }
{ }
type: 'confirm',
name: 'confirmToAdd', answers.confirmToAdd = await confirm({
message: (answers) => { message: [
const icon = getIconDataFromAnswers(answers); 'About to write to simple-icons.json',
return [ chalk.reset(JSON.stringify(getIconDataFromAnswers(answers), null, 4)),
'About to write to simple-icons.json', chalk.reset('Is this OK?'),
chalk.reset(JSON.stringify(icon, null, 4)), ].join('\n\n'),
chalk.reset('Is this OK?'), });
].join('\n\n');
},
},
];
const answers = await inquirer.prompt(dataPrompt);
const icon = getIconDataFromAnswers(answers); const icon = getIconDataFromAnswers(answers);
if (answers.confirmToAdd) { if (answers.confirmToAdd) {