Files
life_generators/scripts/template-generator.py

80 lines
2.3 KiB
Python

#!/bin/python3
import os
import json
import shutil
import logging
import argparse
args_parser = argparse.ArgumentParser(description="Generator Template Generator")
args_parser.add_argument("config", type=str, help="config json path", nargs="?")
args = args_parser.parse_args()
if args.config:
config = None
with open(args.config, "r") as f:
config = json.loads(f.read())
name = config["name"]
desc = config["desc"]
title = config["title"]
repo_name = config["repo_name"]
else:
name = input("Generator name (like fortune, quote): ")
desc = input("Generator desc: ")
title = input("Generator title: ")
repo_name = input("Github repo name: ")
folder_path = f"{name}_generator"
if os.path.exists(folder_path):
logging.error(f"{folder_path} already exists. Please choose another name.")
exit(1)
os.mkdir(folder_path)
os.mkdir(f"{folder_path}/css")
os.mkdir(f"{folder_path}/js")
os.mkdir(f"{folder_path}/images")
os.mkdir(f"{folder_path}/json")
def write_file(src_path, dst_path, **kwargs):
content = None
with open(f"scripts/template/{src_path}", "r") as f:
content = f.read()
for key, val in kwargs.items():
assert (
content.find("{{ %s }}" % key) != -1
), f"The key '{key}' does not appear in scripts/template/{src_path}"
content = content.replace("{{ %s }}" % key, val)
with open(dst_path, "w") as f:
f.write(content)
write_file("css/styles.css", f"{folder_path}/css/styles.css")
write_file("js/main.js", f"{folder_path}/js/{name}.js", name=name)
write_file("js/matrix.js", f"{folder_path}/js/matrix.js")
write_file("js/scripts.js", f"{folder_path}/js/scripts.js")
write_file("js/theme.js", f"{folder_path}/js/theme.js")
write_file(
"js/service-worker.js",
f"{folder_path}/js/service-worker.js",
name=name,
repo_name=repo_name,
folder_path=folder_path,
)
write_file(
"manifest.json",
f"{folder_path}/manifest.json",
title=title,
desc=desc,
repo_name=repo_name,
folder_path=folder_path,
)
write_file("json/themes.json", f"{folder_path}/json/themes.json")
write_file("index.html", f"{folder_path}/index.html", name=name, desc=desc, title=title)
shutil.copytree("scripts/template/images", f"{folder_path}/images", dirs_exist_ok=True)