80 lines
2.3 KiB
Python
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)
|