UNPKG

nav-new-publication-cli

Version:

Add new publication to the navigator web project

39 lines (36 loc) 1.15 kB
import prompts from 'prompts'; import { PublicationData } from './readWritePublications'; import { PromptType } from 'prompts'; export interface PromptConfig { type: PromptType | ((prev: any) => PromptType | null), name: string, message: string, initial?: any, choices?: any, validate?: (value: any) => boolean | string, errorMsg?: string, process?: (value: string) => void, } const createPrompt = (promptConfig: PromptConfig): prompts.PromptObject => { const {process, errorMsg, ...promptOpts } = promptConfig; return { ...promptOpts, onState: ({ value, aborted, exited }) => { if(errorMsg && (aborted || exited)) { throw new Error(errorMsg); } if(process) process(value); } } }; export const createPrompts = async (config: PublicationData, key: string, promptConfig: PromptConfig | PromptConfig[]) => { if(!config[key]) { const promptsArray = Array.isArray(promptConfig) ? promptConfig : [promptConfig]; const values = await prompts(promptsArray.map(createPrompt)); return { ...config, ...values } } return Promise.resolve(config); }