gitmoji-cli
Version:
A gitmoji client for using emojis on commit messages.
50 lines • 1.72 kB
JavaScript
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
} : {})
}] : [])];
};