getTemplateDirectory method

dynamic getTemplateDirectory()

Implementation

getTemplateDirectory() async {
  try {
    List<Directory> directories = [];
    await for (FileSystemEntity entity in _templateRootDirectory.list(
        recursive: false, followLinks: false)) {
      if (entity is Directory) directories.add(entity);
    }
    print('\n');
    ColoredLog.white('Select template index from below options');
    for (int i = 0; i < directories.length; i++) {
      ColoredLog.green(
        directories[i].path.split('/').last,
        name: i.toString(),
      );
    }
    // If no template found in the template directory then print the below message
    // and open the template directory
    if (directories.isEmpty) {
      ColoredLog.red(
        'No template found in the template directory',
        name: 'Error',
        style: LogStyle.blinkSlow,
      );
      Docs.printTemplateCreationLogic();
      await Future.delayed(Duration(seconds: 1));
      Commands.openDirectory(templateDirectory.path);
      exit(0);
    }

    ColoredLog.white('Enter Index :');
    final input = stdin.readLineSync();
    if ((input ?? '').isNotEmpty) {
      final availableOptions = List.generate(directories.length, (i) => i);

      if (availableOptions.contains(int.tryParse(input!))) {
        final dir = directories[int.tryParse(input.toString()) ?? 0];
        setTemplateDirectory = dir.path;
      } else {
        ColoredLog.red(
          'invalid input',
          name: 'Error',
          style: LogStyle.blinkSlow,
        );
        exit(0);
      }
    } else {
      ColoredLog.red(
        'invalid input',
        name: 'Error',
        style: LogStyle.blinkSlow,
      );
      exit(0);
    }

    ColoredLog.green(
      templateDirectory.path.split('/').last,
      name: 'Selected Template',
    );
    ColoredLog.green(
      templateDirectory.path,
      name: 'Selected Template Path',
    );
    print('\n');
  } catch (e) {
    Docs.printTemplateCreationLogic();
  }
}