More smoothness and persistence

This commit is contained in:
MeBeBruno committed 2026-10-04 22:47:53 +02:00
1 parent f924016478
commit aeb9173825
10 files changed
+2113 -1776

No files matched your search

+87
View File
@@ -0,0 +1,87 @@
import pathlib
def is_item_ignored(item_name, ignored_directories_list, ignored_extensions_list):
if item_name in ignored_directories_list:
return True
for extension_string in ignored_extensions_list:
if item_name.endswith(extension_string):
return True
return False
def format_tree_line(entry_name, prefix_string, is_last_element):
connector_string = '└── ' if is_last_element else '├── '
return prefix_string + connector_string + entry_name
def format_file_section(relative_path_string, file_content_string):
header_string = '\n--- FILE START: ' + relative_path_string + ' ---\n'
footer_string = '\n--- FILE END: ' + relative_path_string + ' ---\n'
return header_string + file_content_string + footer_string
def build_final_output_string(tree_lines_list, code_contents_list):
tree_string = '\n'.join(tree_lines_list)
code_string = ''.join(code_contents_list)
return 'PROJECT STRUCTURE:\n' + tree_string + '\n\n' + code_string
def collect_file_system_nodes(root_path, ignored_directories_list, ignored_extensions_list):
valid_nodes_list = []
try:
directory_items_list = list(root_path.iterdir())
except PermissionError:
return valid_nodes_list
for item_path in directory_items_list:
if not is_item_ignored(item_path.name, ignored_directories_list, ignored_extensions_list):
valid_nodes_list.append(item_path)
valid_nodes_list.sort(key=lambda path_object: (not path_object.is_dir(), path_object.name.lower()))
return valid_nodes_list
def read_file_content_safely(file_path_object):
try:
return file_path_object.read_text(encoding='utf-8')
except UnicodeDecodeError:
return '[BINARY_OR_UNSUPPORTED_ENCODING]'
except PermissionError:
return '[PERMISSION_DENIED]'
def write_output_file(output_file_path, content_string):
output_file_path.write_text(content_string, encoding='utf-8')
def process_directory_recursively(current_path, base_directory_path, prefix_string, ignored_directories_list, ignored_extensions_list, tree_lines_list, code_contents_list):
nodes_list = collect_file_system_nodes(current_path, ignored_directories_list, ignored_extensions_list)
total_nodes_count = len(nodes_list)
for index_number, node_path in enumerate(nodes_list):
is_last_node = index_number == total_nodes_count - 1
formatted_tree_line = format_tree_line(node_path.name, prefix_string, is_last_node)
tree_lines_list.append(formatted_tree_line)
if node_path.is_dir():
new_prefix_string = prefix_string + (' ' if is_last_node else '│ ')
process_directory_recursively(node_path, base_directory_path, new_prefix_string, ignored_directories_list, ignored_extensions_list, tree_lines_list, code_contents_list)
else:
relative_file_path_string = str(node_path.relative_to(base_directory_path))
file_content_string = read_file_content_safely(node_path)
formatted_file_section = format_file_section(relative_file_path_string, file_content_string)
code_contents_list.append(formatted_file_section)
def execute_bundler_script():
target_output_file_name_string = 'output_fuer_ki.txt'
ignored_directories_list = ['.git', '__pycache__', 'venv', 'env', '.venv', 'node_modules', '.idea', '.vscode', 'instance']
ignored_extensions_list = ['.pyc', '.sqlite', '.db', '.png', '.jpg', '.jpeg', '.svg', '.ico', '.exe', '.pdf', '.zip', '.tar.gz', '.mp3', '.mp4', target_output_file_name_string]
current_working_directory_path = pathlib.Path.cwd()
output_file_path = current_working_directory_path / target_output_file_name_string
tree_lines_list = [current_working_directory_path.name]
code_contents_list = []
process_directory_recursively(current_working_directory_path, current_working_directory_path, '', ignored_directories_list, ignored_extensions_list, tree_lines_list, code_contents_list)
final_output_string = build_final_output_string(tree_lines_list, code_contents_list)
write_output_file(output_file_path, final_output_string)
print('Erfolg! Die Datei ' + target_output_file_name_string + ' wurde generiert.')
if __name__ == '__main__':
execute_bundler_script()