1
0
mirror of https://github.com/gilbN/theme.park.git synced 2024-10-03 22:17:08 +02:00

get actual file sha

This commit is contained in:
Marius 2021-08-20 13:35:40 +02:00
parent a636454d29
commit 5219574c80

View File

@ -1,9 +1,23 @@
from os import listdir
from os.path import isdir, isfile, join
from json import dump,dumps, loads
import argparse
import subprocess
def create_addons_json(sha):
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(" ")
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"])
SHAS = get_shas(addon_shas)
print(SHAS)
ADDONS = {"addons":{}}
addon_root = './CSS/addons'
addon_folders = [name for name in listdir(addon_root) if isdir(join(addon_root, name))]
@ -20,7 +34,7 @@ def create_addons_json(sha):
ADDONS["addons"].update({
app: {
addon: {
"css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{file}?sha={sha}" for file in files if file.split(".")[1] == "css"]
"css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{file}?sha={SHAS.get(file)}" for file in files if file.split(".")[1] == "css"]
}
}
})
@ -33,53 +47,51 @@ def create_addons_json(sha):
ADDONS["addons"][app].update({
addon: {
dir: {
"css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{dir}/{extra_file}?sha={sha}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"]
"css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{dir}/{extra_file}?sha={SHAS.get(extra_file)}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"]
} for dir in extra_dirs
}
})
return dumps(ADDONS)
def create_json(sha,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"])
SHAS = get_shas(theme_shas)
for theme in themes:
THEMES.update({
"themes": {
theme.split(".")[0].capitalize(): {
"url": f"https://{DOMAIN}/CSS/variables/{theme}?sha={sha}"
"url": f"https://{DOMAIN}/CSS/variables/{theme}?sha={SHAS.get(theme)}"
}for theme in themes
}
})
return dumps(THEMES)
else:
ADDONS = loads(create_addons_json(sha))
ADDONS = loads(create_addons_json())
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":{
app: {
"base_css": f"https://{DOMAIN}/CSS/themes/{app}/{app}-base.css?sha={sha}",
"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 {}
} for app in app_folders
}
}
)
THEMES = loads(create_json(sha,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__":
parser = argparse.ArgumentParser("Creates a JSON file with some information on all applications and themes")
parser.add_argument("--sha", required=True, help="This is the commit SHA we use for 'versioning' on CSS files")
args = parser.parse_args()
sha = args.sha
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(sha,app_folders,themes))
apps = loads(create_json(app_folders,themes))
with open("themes.json", "w") as outfile:
dump(apps, outfile,indent=2)