@assylman/riverpod-cli
Version:
nodejs cli for creating well structured flutter riverpod folders and files needed to work with Riverpod plugin
76 lines (75 loc) • 2.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateProvider = generateProvider;
const fs_1 = __importDefault(require("fs"));
const utils_1 = require("../utils");
const providersDart = '/providers.dart';
function generateProvider(name, options, command) {
const target = options.target;
const libDir = target != null ? '.' + target : './lib/features';
const featureDirectory = libDir + '/' + name;
const dir = featureDirectory + providersDart;
if (command.includes(utils_1.Commands.feature)) {
if (!fs_1.default.existsSync(dir)) {
fs_1.default.writeFileSync(dir, generateProvidersForFeature(name, options), { flag: "w" });
}
}
}
function generateProvidersForFeature(name, options) {
const content = [];
// Import services
const importServiceName = options.i ? 'services.dart' : name + '_service.dart';
content.push(...[
`import 'package:flutter_riverpod/flutter_riverpod.dart';`,
``,
`import './services/${importServiceName}';`,
]);
// Import repositories
const importRepositoryName = options.i ? 'repositories.dart' : name + '_repository.dart';
content.push(...[
`import './repositories/${importRepositoryName}';`,
]);
// Import managers
const importManagerName = options.i ? 'managers.dart' : name + '_manager.dart';
content.push(...[
`import './managers/${importManagerName}';`,
``,
]);
// Declare managers
const managerName = (0, utils_1.toPascalCase)(name) + 'Manager';
content.push(...[
`final ${name}ManagerProvider = Provider<${managerName}>((ref) {`,
/// add repository
` return ${managerName}();`,
`});`,
``,
]);
// Declare repositories
const repositoryName = (0, utils_1.toPascalCase)(name) + 'Repository';
content.push(...[
`final ${name}RepositoryProvider = Provider<${repositoryName}>((ref) {`,
/// add local service
/// add remote service
` return ${repositoryName}Impl();`,
`});`,
``,
]);
// Declare services
const serviceName = (0, utils_1.toPascalCase)(name) + 'Service';
const serviceLocalName = (0, utils_1.toPascalCase)(name) + 'LocalService';
const serviceRemoteName = (0, utils_1.toPascalCase)(name) + 'RemoteService';
content.push(...[
`final ${name}LocalServiceProvider = Provider<${serviceName}>((ref) {`,
` return ${serviceLocalName}();`,
`});`,
``,
`final ${name}RemoteServiceProvider = Provider<${serviceName}>((ref) {`,
` return ${serviceRemoteName}();`,
`});`,
``,
]);
return content.join('\n');
}