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.

49 lines (48 loc) 1.83 kB
import fs from "node:fs"; import pc from "picocolors"; import path from "node:path"; import { ensureString, initProject } from "../utils/index.js"; import { _spinner } from "../utils/spinners.js"; import { handleCreateConfigFile } from "../utils/index.js"; import { createConfigPrompter, overrideConfigPrompter, prompter } from "../utils/index.js"; const spinner = _spinner(); export const init = async () => { const configPath = path.join(process.cwd(), "rnpaconfig.json"); let componentOutDir = ""; try { const data = fs.readFileSync(configPath, "utf-8"); if (data) { const override = await overrideConfigPrompter(); if (override) { const { configOutDir: outDir, importAlias } = await prompter(); componentOutDir = outDir; handleCreateConfigFile(configPath, { outDir, alias: ensureString(importAlias) }); } } } catch (err) { if (err) { const createConfigFile = await createConfigPrompter(); if (createConfigFile) { const { configOutDir: outDir, importAlias } = await prompter(); componentOutDir = outDir; handleCreateConfigFile(configPath, { outDir, alias: ensureString(importAlias) }); } } } try { const data = fs.readFileSync(configPath, "utf-8"); const { outDir, alias } = JSON.parse(data); if (!outDir) { console.log(pc.red(`Invalid configuration: ${pc.green("outDir")} ${pc.white(`not specified in ${pc.green("rnpaConfig.json")}`)}`)); return; } } catch (err) { if (err) { console.log(pc.red("rnpaconfig.json not found.")); return; } } initProject(componentOutDir, spinner); };