printDirectoryTree method

Future<void> printDirectoryTree(
  1. Directory directory, {
  2. String prefix = '',
})

Prints the directory tree starting from the specified directory.

Builds a tree representation of the directory structure and prints it to the console, followed by summary information.

directory The directory to start from. prefix Prefix string to use for indentation (default: empty string).

Implementation

Future<void> printDirectoryTree(
  Directory directory, {
  String prefix = '',
}) async {
  try {
    final rootNode = await _buildFileTree(directory, currentLevel: 0);

    _sortNodes(rootNode.children);

    final totalFiles = _countFiles(rootNode);
    final totalDirs = _countDirs(rootNode);
    final totalSize = rootNode.size;

    _printTree(rootNode, prefix: '');

    print('\n${ConsoleColors.bold}Summary:${ConsoleColors.reset}');
    print(
      '${ConsoleColors.info('Total files:')} ${ConsoleColors.success(totalFiles.toString())}',
    );
    print(
      '${ConsoleColors.info('Total directories:')} ${ConsoleColors.success(totalDirs.toString())}',
    );
    if (showSizes) {
      print(
        '${ConsoleColors.info('Total size:')} ${ConsoleColors.success(_formatSize(totalSize))}',
      );
    }
  } catch (e) {
    print(ConsoleColors.error('Error processing directory tree: $e'));
  }
}