#!/usr/bin/python3 # vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab import sys import os import subprocess import json import jinja2 SETTINGS_PATH = "settings.json" SYSTEMD_TEMPLATE = "systemd/webtemplate.service.jinja2" FLASK_TEMPLATE = "flask/main.py.jinja2" REPOSITORY_WEBROOT = "webroot" def read_settings(): """Read the SETTINGS_PATH File and return a Dictionary with its Content""" with open(SETTINGS_PATH, "r") as settings: settings = settings.read() settings = json.loads(settings) return settings def build_systemd_files(settings): """Generate all Systemd Unit Files with Settings from SETTINGS_PATH""" with open(SYSTEMD_TEMPLATE, "r") as template: template = template.read() template = jinja2.Template(template) systemd_file = template.render(settings) file_path = "systemd/build/{}.service".format(settings["project_name"]) with open(file_path, "w") as _file: _file.write(systemd_file) def build_flask_files(settings): """Generate all Python Flask Files with Settings from SETTINGS_PATH""" if settings["web_framework"] == "flask": with open(FLASK_TEMPLATE, "r") as template: template = template.read() template = jinja2.Template(template) flask_file = template.render(settings) file_path = "flask/build/{}".format(settings["project_name"]) with open(file_path, "w") as _file: _file.write(flask_file) else: print("Flask not enabled in settings.json - skipping file generation for Flask") def install_webroot(settings): """Install every File from the Repositories Webroot to the Systems Webroot""" for directory, subdirs, files in os.walk(REPOSITORY_WEBROOT, topdown=False): for _file in files: path_to_file = os.path.join(directory, _file) relative_path = os.path.relpath(path_to_file, REPOSITORY_WEBROOT) target_path = os.path.join(settings["webroot_installation_path"], relative_path) subprocess.run("install -Dm 644 {} {}".format(path_to_file, target_path), shell=True) def uninstall_webroot(settings): """Uninstalls every File from the Systems Webroot""" path_to_delete = os.path.join(settings["webroot_installation_path"], "*") subprocess.run("rm -rf {}".format(path_to_delete), shell=True) def main(): """The main Function""" settings = read_settings() # get settings from SETTINGS_PATH # just one argument is allowed: if len(sys.argv) != 2: print("Provide exactly one parameter") sys.exit(1) # execute given command command = sys.argv[1] if command == "build_systemd_files": build_systemd_files(settings) elif command == "build_flask_files": build_flask_files(settings) elif command == "install_webroot": install_webroot(settings) elif command == "uninstall_webroot": uninstall_webroot(settings) else: print("Unknown command") exit(1) if __name__ == "__main__": main()