kopia lustrzana https://gitlab.com/subdivided_xyz/nodes_xyz
60 wiersze
1.8 KiB
Python
Executable File
60 wiersze
1.8 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import os
|
|
import sys
|
|
import uuid
|
|
import argparse
|
|
import shutil
|
|
|
|
|
|
parser = argparse.ArgumentParser(description='Generate an updated blender_assets.cats.txt')
|
|
parser.add_argument('--write', help="If given, update blender's catalog file of the "+
|
|
"current dir. If not, print content to stdout.",
|
|
action='store_true')
|
|
args = parser.parse_args()
|
|
|
|
|
|
pathsUUIDs = {}
|
|
ignored_dirs = [".git", ".vscode"]
|
|
|
|
catalog_file = "./blender_assets.cats.txt"
|
|
|
|
if os.path.exists(catalog_file):
|
|
with open(catalog_file) as f:
|
|
for line in f.readlines():
|
|
if not line.startswith("#") and ":" in line:
|
|
line_uuid = line.split(":")[0].strip()
|
|
path = line.split(":")[1].strip()
|
|
pathsUUIDs[path] = line_uuid
|
|
|
|
f = None
|
|
if args.write:
|
|
if os.path.exists(catalog_file):
|
|
shutil.copyfile(catalog_file, catalog_file+".bak")
|
|
f = open(catalog_file, "w")
|
|
else:
|
|
f = sys.stdout
|
|
|
|
print("# Autogenerated folder based asset catalogs", file=f)
|
|
print("", file=f)
|
|
print("VERSION 1", file=f)
|
|
catalog_paths = []
|
|
for root,dirs,files in os.walk("."):
|
|
traverse_dirs = []
|
|
for dir in dirs:
|
|
if dir in ignored_dirs:
|
|
continue
|
|
path = os.path.join(root, dir)
|
|
if not os.path.exists(os.path.join(path, ".catalogignore")):
|
|
catalog_path = path.replace("./", "")
|
|
catalog_paths.append(catalog_path)
|
|
if not os.path.exists(os.path.join(path, ".nosubcatalogs")):
|
|
traverse_dirs.append(dir)
|
|
dirs[:] = traverse_dirs
|
|
catalog_paths.sort()
|
|
for catalog_path in catalog_paths:
|
|
line_uuid = str(uuid.uuid4())
|
|
if catalog_path in pathsUUIDs:
|
|
line_uuid = pathsUUIDs[catalog_path]
|
|
print(":".join([line_uuid, catalog_path])+":", file=f)
|