@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
JavaScript
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;
};