createNewFeature method
Future<void>
createNewFeature(
{ - required String featureName,
})
Implementation
Future<void> createNewFeature({
required 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: '$featureName $kFeatureString $kCreated',
);
} catch (e) {
Utility.successPrinter(text: '$kErrorCopyingFolder $e');
}
}