1
0
Fork 0
mirror of https://github.com/walkxcode/dashboard-icons.git synced 2024-10-31 17:11:12 +01:00
dashboard-icons/config/tree.py

55 lines
1.7 KiB
Python
Raw Normal View History

import os
import json
import sys
def folder_to_json(path):
tree = {}
base_folder_name = os.path.basename(os.path.normpath(path)) # Get the base folder name
# Ensure the path doesn't return an empty string or dot.
base_folder_name = base_folder_name if base_folder_name else os.path.basename(os.getcwd())
for root, dirs, files in os.walk(path):
# Get the relative path of the root directory
relative_path = os.path.relpath(root, path)
# Use base folder name for root, and append relative path for subfolders
key = base_folder_name if relative_path == '.' else os.path.join(base_folder_name, relative_path)
# Only add the folder if there are files
if files:
tree[key] = files
return tree
def generate_combined_tree(paths):
combined_tree = {}
for path in paths:
# Add folder tree for each path
combined_tree.update(folder_to_json(path))
return combined_tree
if __name__ == "__main__":
# Get the list of folder paths from command-line arguments
folder_paths = sys.argv[1:]
if not folder_paths:
print("Please provide at least one folder path.")
sys.exit(1)
# Check if 'tree.json' exists
if os.path.exists('tree.json'):
print("'tree.json' already exists. No file was created.")
sys.exit(0)
# Generate the combined folder tree for all specified paths
combined_folder_tree = generate_combined_tree(folder_paths)
# Write the combined JSON structure to a file named tree.json
with open('tree.json', 'w') as f:
json.dump(combined_folder_tree, f, indent=4)
print("Folder tree successfully written to 'tree.json'.")