UNPKG

gitmoji-cli

Version:

A gitmoji client for using emojis on commit messages.

50 lines 1.72 kB
import inquirer from 'inquirer'; import inquirerAutocompletePrompt from 'inquirer-autocomplete-prompt'; import configurationVault from "../../utils/configurationVault/index.js"; import filterGitmojis from "../../utils/filterGitmojis.js"; import getDefaultCommitContent from "../../utils/getDefaultCommitContent.js"; import { capitalizeTitle } from "./index.js"; import guard from "./guard.js"; const TITLE_MAX_LENGTH_COUNT = 48; inquirer.registerPrompt('autocomplete', inquirerAutocompletePrompt); export default (gitmojis, options) => { const { title, message, scope } = getDefaultCommitContent(options); return [{ name: 'gitmoji', message: 'Choose a gitmoji:', type: 'autocomplete', source: (answersSoFor, input) => { return Promise.resolve(filterGitmojis(input, gitmojis).map(gitmoji => ({ name: `${gitmoji.emoji} - ${gitmoji.description}`, value: gitmoji[configurationVault.getEmojiFormat()] }))); } }, ...(configurationVault.getScopePrompt() ? [{ name: 'scope', message: 'Enter the scope of current changes:', ...(scope ? { default: scope } : {}) }] : []), { name: 'title', message: 'Enter the commit title', validate: guard.title, transformer: input => { const length = (title || input).length.toString().padStart(2, '0'); return `[${length}/${TITLE_MAX_LENGTH_COUNT}]: ${configurationVault.getCapitalizeTitle() ? capitalizeTitle(input) : input}`; }, ...(title ? { default: title } : {}) }, ...(configurationVault.getMessagePrompt() ? [{ name: 'message', message: 'Enter the commit message:', ...(message ? { default: message } : {}) }] : [])]; };