handleGenerateFeature function

Future<void> handleGenerateFeature()

Implementation

Future<void> handleGenerateFeature() async {
  var nameFolder = '';
  var nameFolderParent = '';
  var createRoute = true;

  var line = await InputOutputHelper.enterText('''Select feature:
1. Create a new screen
2. Create a new page
0. Exit\n >I choose: ''');
  var valueChoose = 0;
  try {
    valueChoose = int.tryParse('$line') ?? 0;
    if (valueChoose <= 0 && valueChoose >= 2) {
      stdout.write('You have chosen to exit. Goodbye!');
      exit(0);
    }
  } catch (e) {
    stdout.write('You have chosen to exit. Goodbye!');
    exit(0);
  }

  switch (valueChoose) {
    case 1:
      nameFolder = await InputOutputHelper.enterFolderFeature();

      var recheck = await InputOutputHelper.enterText(
          'Do you want to create a route for the $nameFolder screen? (y/n)\n');
      if ((recheck?.isEmpty ?? true) || recheck?.toUpperCase() == 'N') {
        createRoute = false;
      }

      break;
    case 2:
      nameFolderParent = (await InputOutputHelper.enterText(
              'Enter name folder parent (The folder must be available and located in the folder <your-project>/lib/features): ')) ??
          '';
      final dir =
          Directory('${FCoreGenConstant.folderFeatures}/$nameFolderParent');
      final dirExist = await dir.exists();
      if (!dirExist) {
        stdout.write('Sorry, the folder $nameFolderParent is\'nt exists!\n');
        exit(0);
      }
      nameFolderParent = '/$nameFolderParent';
      nameFolder = await InputOutputHelper.enterFolderFeature();

      break;
    default:
  }

  final generateFeature = GenerateFeature(
    folder: '${FCoreGenConstant.folderFeatures}$nameFolderParent',
    name: nameFolder,
    type: nameFolderParent.isNotEmpty
        ? GenerateFeatureType.page
        : GenerateFeatureType.screen,
    createRoute: createRoute,
  );
  await generateFeature.create();
}