|
|
@ -1,25 +1,29 @@ |
|
|
|
from os import listdir |
|
|
|
from os.path import isdir, isfile, join |
|
|
|
from json import dump,dumps, loads |
|
|
|
from json import dump, dumps, loads |
|
|
|
import subprocess |
|
|
|
|
|
|
|
|
|
|
|
def get_shas(output): |
|
|
|
"""Returns a dict of CSS files and SHAs""" |
|
|
|
output_lines = output.splitlines() |
|
|
|
sha_dict = {} |
|
|
|
for line in output_lines: |
|
|
|
line = line.decode('utf-8').replace("\t","").split(" ") |
|
|
|
line = line.decode('utf-8').replace("\t", "").split(" ") |
|
|
|
sha = line[1] |
|
|
|
css_file = [file for file in line[2].split("/") if "css" in file][0] |
|
|
|
sha_dict.update({css_file: sha}) |
|
|
|
return(sha_dict) |
|
|
|
|
|
|
|
|
|
|
|
def create_addons_json(): |
|
|
|
addon_shas = subprocess.check_output(["git", "ls-files", "-s", "./CSS/addons/*.css"]) |
|
|
|
addon_shas = subprocess.check_output( |
|
|
|
["git", "ls-files", "-s", "./CSS/addons/*.css"]) |
|
|
|
SHAS = get_shas(addon_shas) |
|
|
|
ADDONS = {"addons":{}} |
|
|
|
ADDONS = {"addons": {}} |
|
|
|
addon_root = './CSS/addons' |
|
|
|
addon_folders = [name for name in listdir(addon_root) if isdir(join(addon_root, name))] |
|
|
|
addon_folders = [name for name in listdir( |
|
|
|
addon_root) if isdir(join(addon_root, name))] |
|
|
|
for app in addon_folders: |
|
|
|
app_addons = [addon for addon in listdir(f"{addon_root}/{app}")] |
|
|
|
ADDONS["addons"].update({ |
|
|
@ -28,7 +32,8 @@ def create_addons_json(): |
|
|
|
} |
|
|
|
}) |
|
|
|
for addon in app_addons: |
|
|
|
files = [file for file in listdir(f"{addon_root}/{app}/{addon}") if isfile(join(f"{addon_root}/{app}/{addon}", file))] |
|
|
|
files = [file for file in listdir( |
|
|
|
f"{addon_root}/{app}/{addon}") if isfile(join(f"{addon_root}/{app}/{addon}", file))] |
|
|
|
if len([f for f in files if f.endswith('.css')]) > 1: |
|
|
|
ADDONS["addons"][app][addon].update({ |
|
|
|
"css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{file}?sha={SHAS.get(file)}" for file in files if file.split(".")[1] == "css"] |
|
|
@ -53,10 +58,12 @@ def create_addons_json(): |
|
|
|
) |
|
|
|
return dumps(ADDONS) |
|
|
|
|
|
|
|
def create_json(app_folders:list=None,themes:list=None,no_sub_folders=False): |
|
|
|
|
|
|
|
def create_json(app_folders: list = None, themes: list = None, no_sub_folders=False): |
|
|
|
if no_sub_folders: |
|
|
|
THEMES = {} |
|
|
|
theme_shas = subprocess.check_output(["git", "ls-files", "-s", "./CSS/variables/*.css"]) |
|
|
|
theme_shas = subprocess.check_output( |
|
|
|
["git", "ls-files", "-s", "./CSS/variables/*.css"]) |
|
|
|
SHAS = get_shas(theme_shas) |
|
|
|
for theme in themes: |
|
|
|
THEMES.update({ |
|
|
@ -69,12 +76,13 @@ def create_json(app_folders:list=None,themes:list=None,no_sub_folders=False): |
|
|
|
return dumps(THEMES) |
|
|
|
else: |
|
|
|
ADDONS = loads(create_addons_json()) |
|
|
|
APPS = {"applications":{}} |
|
|
|
app_shas = subprocess.check_output(["git", "ls-files", "-s", "./CSS/themes/*base.css"]) |
|
|
|
APPS = {"applications": {}} |
|
|
|
app_shas = subprocess.check_output( |
|
|
|
["git", "ls-files", "-s", "./CSS/themes/*base.css"]) |
|
|
|
SHAS = get_shas(app_shas) |
|
|
|
for app in app_folders: |
|
|
|
APPS.update({ |
|
|
|
"applications":{ |
|
|
|
"applications": { |
|
|
|
app: { |
|
|
|
"base_css": f"https://{DOMAIN}/CSS/themes/{app}/{app}-base.css?sha={SHAS.get(f'{app}-base.css')}", |
|
|
|
"addons": ADDONS["addons"][app] if app in ADDONS["addons"] else {} |
|
|
@ -82,16 +90,19 @@ def create_json(app_folders:list=None,themes:list=None,no_sub_folders=False): |
|
|
|
} |
|
|
|
} |
|
|
|
) |
|
|
|
THEMES = loads(create_json(themes=themes,no_sub_folders=True)) |
|
|
|
THEMES = loads(create_json(themes=themes, no_sub_folders=True)) |
|
|
|
APPS.update(ADDONS) |
|
|
|
APPS.update(THEMES) |
|
|
|
return dumps(APPS) |
|
|
|
|
|
|
|
if __name__== "__main__": |
|
|
|
app_folders = [name for name in listdir('./CSS/themes') if isdir(join('./CSS/themes', name))] |
|
|
|
themes = [name for name in listdir('./CSS/variables') if isfile(join('./CSS/variables', name))] |
|
|
|
DOMAIN = open("CNAME","rt",closefd=True).readline() |
|
|
|
apps = loads(create_json(app_folders,themes)) |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
app_folders = [name for name in listdir( |
|
|
|
'./CSS/themes') if isdir(join('./CSS/themes', name))] |
|
|
|
themes = [name for name in listdir( |
|
|
|
'./CSS/variables') if isfile(join('./CSS/variables', name))] |
|
|
|
DOMAIN = open("CNAME", "rt", closefd=True).readline() |
|
|
|
apps = loads(create_json(app_folders, themes)) |
|
|
|
|
|
|
|
with open("themes.json", "w") as outfile: |
|
|
|
dump(apps, outfile,indent=2) |
|
|
|
dump(apps, outfile, indent=2) |
|
|
|