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