UNPKG

@assylman/riverpod-cli

Version:

nodejs cli for creating well structured flutter riverpod folders and files needed to work with Riverpod plugin

92 lines (91 loc) 3.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateFeature = generateFeature; exports.generateFeatureIndexFile = generateFeatureIndexFile; const fs_1 = __importDefault(require("fs")); const os_1 = __importDefault(require("os")); const utils_1 = require("../utils"); const managers_1 = require("../managers"); const repositories_1 = require("../repositories"); const services_1 = require("../services"); const providers_1 = require("../providers"); async function generateFeature(name, options) { const serviceOptions = { ...options, l: true, r: true }; (0, services_1.generateService)(name, serviceOptions); await (0, utils_1.delay)(300); (0, repositories_1.generateRepository)(name, options); await (0, utils_1.delay)(300); (0, managers_1.generateManager)(name, options); if (options.p) { await (0, utils_1.delay)(300); (0, providers_1.generateProvider)(name, options, utils_1.Commands.feature); } } function generateFeatureIndexFile(name, command, featureDirectory) { const dir = featureDirectory + '/' + name + '.dart'; if (!fs_1.default.existsSync(dir)) { fs_1.default.writeFileSync(dir, generateInitialIndexFile(name, command), { flag: "w" }); } else { fs_1.default.writeFileSync(dir, generateIndexFile(name, dir, command), { flag: "w" }); } } function generateInitialIndexFile(name, command) { const content = [ `/// ${(0, utils_1.toPascalCase)(name)} feature`, `///`, `///`, ``, `library;`, ``, ]; if (command.match(utils_1.Commands.service)) { content.push(`export './services/services.dart';`); } if (command.match(utils_1.Commands.manager)) { content.push(`export './managers/managers.dart';`); } if (command.match(utils_1.Commands.repository)) { content.push(`export './repositories/repositories.dart';`); } return content.join('\n'); } function generateIndexFile(name, dir, command) { const data = fs_1.default.readFileSync(dir, { encoding: 'utf-8' }); const splittedData = data.split(os_1.default.EOL); var exports = {}; for (let i = 0; i < splittedData.length; i++) { let value = splittedData[i]; if (value) { if (value.startsWith('export')) { exports[i] = value.replace('export ', ''); } } } if (splittedData[splittedData.length - 1] == '') { splittedData.splice(-1); } const managerExports = 'export \'./managers/managers.dart\';'; const serviceExports = 'export \'./services/services.dart\';'; const repositoryExports = 'export \'./repositories/repositories.dart\';'; if (command.includes(utils_1.Commands.manager)) { if (!splittedData.includes(managerExports)) { splittedData.push(managerExports); } } if (command.includes(utils_1.Commands.repository)) { if (!splittedData.includes(repositoryExports)) { splittedData.push(repositoryExports); } } if (command.includes(utils_1.Commands.service)) { if (!splittedData.includes(serviceExports)) { splittedData.push(serviceExports); } } fs_1.default.unlinkSync(dir); return splittedData.join('\n'); }