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