createNewFeature method
Implementation
Future<void> createNewFeature(
String featureName,
) async {
String destinationPath = '$kLibFeatures$featureName';
String sourceFolderPath = Utility.getDirFromCliPackage(
sourceFolderPath: kCreateFeatureBasicStructure);
Directory destinationDirectory = Directory(destinationPath);
if (destinationDirectory.existsSync()) {
Utility.errorPrinter(text: kErrorChooseDifferentFeatureName);
return;
}
try {
await Utility.copyFolder(
sourcePath: sourceFolderPath, destinationPath: destinationPath);
await Utility.processFiles(
path: destinationPath,
substring: kStartComment,
replacement: kWhitespaces,
isPascalCase: false);
await Utility.processFiles(
path: destinationPath,
substring: kEndComment,
replacement: kWhitespaces,
isPascalCase: false);
await Utility.renameFilesWithSubstring(
path: destinationPath,
substring: kBasicStructureLowerCase,
newName: featureName);
await Utility.processFiles(
path: destinationPath,
substring: kBasicStructurePascalCase,
replacement: featureName,
isPascalCase: true);
await Utility.processFiles(
path: destinationPath,
substring: kBasicStructureLowerCase,
replacement: featureName.toLowerCase(),
isPascalCase: false);
String? name = Utility.getPubspecInfo();
if (name != null) {
await Utility.processFiles(
path: destinationPath,
substring: kFlutterCleanArchitecture,
replacement: name,
isPascalCase: false);
}
final nameOfFeature = featureName.toLowerCase();
String pascalCase = Utility.toPascalCase(input: nameOfFeature);
await diGetterFileUpdate(
nameOfFeature: nameOfFeature, pascalCase: pascalCase);
await mockDiGetterFileUpdate(
nameOfFeature: nameOfFeature, pascalCase: pascalCase);
await prodDiGetterFileUpdate(
nameOfFeature: nameOfFeature, pascalCase: pascalCase);
await injectionContainerFileUpdate(
nameOfFeature: nameOfFeature, pascalCase: pascalCase);
Utility.successPrinter(text: '$kFeatureString $featureName $kCreated');
} catch (e) {
print('$kErrorCopyingFolder $e');
}
}