import os import json import sys from pathlib import Path def generate_folder_tree(paths): tree = {} for path in paths: resolved_path = Path(path).resolve() base_folder = resolved_path.name or Path.cwd().name for root, _, files in os.walk(resolved_path): relative_path = os.path.relpath(root, resolved_path) key = base_folder if relative_path == '.' else os.path.join(base_folder, relative_path) if files: tree[key] = sorted(files) # Sort the list of files alphabetically return tree if __name__ == "__main__": # Adjust paths to be one level up folder_paths = sys.argv[1:] folder_paths = [str(Path(path).resolve()) for path in folder_paths] if not folder_paths: print("Please provide at least one folder path.") sys.exit(1) # Generate the combined folder tree folder_tree = generate_folder_tree(folder_paths) # Write the JSON structure to 'tree.json' in the root folder root_dir = Path(__file__).resolve().parent tree_json_path = root_dir / 'tree.json' with open(tree_json_path, 'w') as f: json.dump(folder_tree, f, indent=4, sort_keys=True) # Sort the keys in the JSON output print(f"Folder tree successfully written to '{tree_json_path}'.")