@assylman/riverpod-cli
Version:
nodejs cli for creating well structured flutter riverpod folders and files needed to work with Riverpod plugin
57 lines (56 loc) • 2.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateManager = generateManager;
const fs_1 = __importDefault(require("fs"));
const utils_1 = require("../utils");
const features_1 = require("../features");
const managerDart = '_manager.dart';
const indexDart = 'managers.dart';
function generateManager(name, options) {
const target = options.target;
const libDir = target != null ? '.' + target : './lib/features';
const featureDirectory = libDir + '/' + name;
const managerDirectory = featureDirectory + '/managers';
const managerFileName = managerDirectory + '/' + name + managerDart;
const managerIndexFileName = managerDirectory + '/' + indexDart;
const dirs = managerDirectory.split('/').filter(n => n && n != 'lib');
var fullDirs;
for (const dir of dirs) {
if (!fullDirs) {
fullDirs = './lib/' + dir;
}
else {
fullDirs += '/' + dir;
}
if (!fs_1.default.existsSync(fullDirs)) {
try {
fs_1.default.mkdirSync(fullDirs, { recursive: true });
}
catch (err) {
console.error(err);
}
}
}
fs_1.default.writeFileSync(managerFileName, generateManagerFile(name), { flag: "w" });
if (options.i) {
fs_1.default.writeFileSync(managerIndexFileName, generateIndexBarrelFile(name), { flag: "w" });
(0, features_1.generateFeatureIndexFile)(name, utils_1.Commands.manager, featureDirectory);
}
}
function generateManagerFile(name) {
const managerName = (0, utils_1.toPascalCase)(name) + 'Manager';
return [
`class ${managerName} {`,
` const ${managerName}();`,
`}`,
].join('\n');
}
function generateIndexBarrelFile(name) {
const content = [
`export './${name}_manager.dart';`,
];
return content.join('\n');
}