Skip to content

Instantly share code, notes, and snippets.

@uyjulian
Created April 30, 2023 22:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uyjulian/f9e645a6a049fad1bf131861a3e778bb to your computer and use it in GitHub Desktop.
Save uyjulian/f9e645a6a049fad1bf131861a3e778bb to your computer and use it in GitHub Desktop.
if True:
import pathlib
import sys
import json
project_path = pathlib.Path(sys.argv[1])
items = {}
for file in sorted(project_path.glob('**/*')):
if str(file).endswith(".shaderkeywords.txt"):
sk_contents = []
with open(file, "r", encoding="utf-8") as f:
sk_contents = f.read().split("\n")
keywords = []
for line in sk_contents:
if line == "--":
break
x = line.split("=")
if x[1] == "1":
keywords.append(x[0])
keywords = sorted(keywords)
items[str(file)] = keywords
items2 = {}
for item in items.keys():
keywords_join_space = (" ").join(items[item])
items2[keywords_join_space] = item
items2_length = {}
keywords_len_max = 0
for item in items2.keys():
keywords = item.split(" ")
keywords_len = len(keywords)
if keywords_len > keywords_len_max:
keywords_len_max = keywords_len
items2_length[item] = keywords_len
items2_links = {}
for i in range(keywords_len_max, -1, -1):
for item in items2.keys():
if items2_length[item] == i:
links = []
for item2 in items2.keys():
if item != item2:
if items2_length[item2] > i:
keywords = item.split(" ")
keywords2 = item2.split(" ")
not_found = False
for keyword in keywords:
if keyword not in keywords2:
not_found = True
break
if not not_found:
links.append(item2)
if len(links) > 0:
items2_links[item] = links
items2_reverselinks = {}
for item in items2_links.keys():
for item2 in items2_links[item]:
if item2 not in items2_reverselinks:
items2_reverselinks[item2] = []
for item in items2_links.keys():
for item2 in items2_links[item]:
if item not in items2_reverselinks[item2]:
items2_reverselinks[item2].append(item)
for item in items2_reverselinks.keys():
if len(items2_reverselinks[item]) > 0:
if items2_reverselinks[item][0] in items2_reverselinks:
items2_reverselinks[item] = [items2_reverselinks[item][0]]
with open("info.json", "w") as f:
json.dump(items2_reverselinks, f, indent=4, sort_keys=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment