UNPKG

@react-native-paper-abstracted/cli

Version:

React Native Paper Abstracted is a package that allows you to use only the components you need from [React Native Paper](https://reactnativepaper.com). Thus allowing users to keep their app size small, and provides endless customization.

125 lines (124 loc) 3.42 kB
import fs from "node:fs"; import prompts from "prompts"; const enableTerminalCursor = () => { process.stdout.write("\x1B[?25h"); }; const onState = (state) => { if (state.aborted) { // If we don't re-enable the terminal cursor before exiting // the program, the cursor will remain hidden enableTerminalCursor(); process.stdout.write("\n"); process.exit(1); } }; const promptOverrideConfig = [ { type: "toggle", name: "overrideConfig", message: "rnpaConfig.json file already exist, will you like to override?", initial: false, active: "yes", inactive: "no", onState, }, ]; const promptOverrideComponent = [ { type: "toggle", name: "overrideConfig", message: "This component already exist, do you want to override it?", initial: false, active: "yes", inactive: "no", onState, }, ]; const promptCreateRNPAConfig = [ { type: "toggle", name: "createConfigFile", message: "Will you like to create a rnpaConfig.json file? ", initial: true, active: "yes", inactive: "no", onState, }, ]; const promptOutDir = [ { type: "text", name: "configOutDir", message: "Which folder will you want to save components?", initial: "components", onState, }, // { // type: 'toggle', // name: 'useImportAlias', // message: 'WIll you like to use an import alias?', // initial: true, // active: 'yes', // inactive: 'no' // }, ]; const promptUseImportAlias = [ { type: "toggle", name: "useImportAlias", message: "Will you like to use an import alias?", initial: true, active: "yes", inactive: "no", }, ]; const questions = [ { type: "number", name: "age", message: "How old are you?", onState, }, { type: "text", name: "about", message: "Tell something about yourself", initial: "Why should I?", onState, }, ]; export const prompter = async () => { let alias; const { configOutDir } = await prompts(promptOutDir); if (fs.existsSync("tsconfig.json")) { const { useImportAlias } = await prompts(promptUseImportAlias); if (useImportAlias) { const { importAlias } = await prompts([ { type: "text", name: "importAlias", message: "What is your import alias", initial: `@/${configOutDir}`, }, ]); alias = importAlias; } } return ({ importAlias: alias, configOutDir }); // if (useImportAlias) { // response = await prompts(promptUseImportAlias); // }; // return ({ ...response, configOutDir: '' }); }; export const createConfigPrompter = async () => { const { createConfigFile } = await prompts(promptCreateRNPAConfig); return createConfigFile; }; export const overrideConfigPrompter = async () => { const { overrideConfig } = await prompts(promptOverrideConfig); return overrideConfig; }; export const overrideComponentPrompter = async () => { const { overrideConfig } = await prompts(promptOverrideComponent); return overrideConfig; };