mirror of
https://github.com/kirill-markin/repo-to-text.git
synced 2025-12-06 03:22:23 -08:00
linter cleanup
This commit is contained in:
parent
0cba3592f2
commit
5f283feefd
9 changed files with 295 additions and 191 deletions
|
|
@ -1,3 +1,5 @@
|
|||
"""This module contains utility functions for the repo_to_text package."""
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import logging
|
||||
|
|
@ -19,7 +21,10 @@ def check_tree_command() -> bool:
|
|||
bool: True if tree command is available, False otherwise
|
||||
"""
|
||||
if shutil.which('tree') is None:
|
||||
print("The 'tree' command is not found. Please install it using one of the following commands:")
|
||||
print(
|
||||
"The 'tree' command is not found. "
|
||||
+ "Please install it using one of the following commands:"
|
||||
)
|
||||
print("For Debian-based systems (e.g., Ubuntu): sudo apt-get install tree")
|
||||
print("For Red Hat-based systems (e.g., Fedora, CentOS): sudo yum install tree")
|
||||
return False
|
||||
|
|
@ -40,43 +45,38 @@ def is_ignored_path(file_path: str) -> bool:
|
|||
is_ignored_file = any(file_path.startswith(prefix) for prefix in ignored_files_prefix)
|
||||
result = is_ignored_dir or is_ignored_file
|
||||
if result:
|
||||
logging.debug(f'Path ignored: {file_path}')
|
||||
logging.debug('Path ignored: %s', file_path)
|
||||
return result
|
||||
|
||||
def remove_empty_dirs(tree_output: str, path: str = '.') -> str:
|
||||
"""Remove empty directories from tree output.
|
||||
|
||||
Args:
|
||||
tree_output: Output from tree command
|
||||
path: Base path for the tree
|
||||
|
||||
Returns:
|
||||
str: Tree output with empty directories removed
|
||||
"""
|
||||
def remove_empty_dirs(tree_output: str) -> str:
|
||||
"""Remove empty directories from tree output."""
|
||||
logging.debug('Removing empty directories from tree output')
|
||||
lines = tree_output.splitlines()
|
||||
non_empty_dirs: Set[str] = set()
|
||||
filtered_lines: List[str] = []
|
||||
|
||||
# Track directories that have files or subdirectories
|
||||
non_empty_dirs: Set[str] = set()
|
||||
|
||||
# First pass: identify non-empty directories
|
||||
for line in reversed(lines):
|
||||
stripped_line = line.strip()
|
||||
if not stripped_line.endswith('/'):
|
||||
# This is a file, mark its parent directory as non-empty
|
||||
parent_dir: str = os.path.dirname(stripped_line)
|
||||
while parent_dir:
|
||||
non_empty_dirs.add(parent_dir)
|
||||
parent_dir = os.path.dirname(parent_dir)
|
||||
|
||||
# Second pass: filter out empty directories
|
||||
for line in lines:
|
||||
parts = line.strip().split()
|
||||
if parts:
|
||||
full_path = parts[-1]
|
||||
if os.path.isdir(full_path) and not any(os.path.isfile(os.path.join(full_path, f)) for f in os.listdir(full_path)):
|
||||
logging.debug(f'Directory is empty and will be removed: {full_path}')
|
||||
stripped_line = line.strip()
|
||||
if stripped_line.endswith('/'):
|
||||
# This is a directory
|
||||
dir_path = stripped_line[:-1] # Remove trailing slash
|
||||
if dir_path not in non_empty_dirs:
|
||||
logging.debug('Directory is empty and will be removed: %s', dir_path)
|
||||
continue
|
||||
non_empty_dirs.add(os.path.dirname(full_path))
|
||||
filtered_lines.append(line)
|
||||
|
||||
final_lines: List[str] = []
|
||||
for line in filtered_lines:
|
||||
parts = line.strip().split()
|
||||
if parts:
|
||||
full_path = parts[-1]
|
||||
if os.path.isdir(full_path) and full_path not in non_empty_dirs:
|
||||
logging.debug(f'Directory is empty and will be removed: {full_path}')
|
||||
continue
|
||||
final_lines.append(line)
|
||||
|
||||
filtered_lines.append(line)
|
||||
|
||||
logging.debug('Empty directory removal complete')
|
||||
return '\n'.join(filtered_lines)
|
||||
return '\n'.join(filtered_lines)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue