Newer
Older
NewLang / build.py
# SPDX-License-Identifier: LGPL-2.1
# Copyright 2022 Jookia <contact@jookia.org>

import shutil
import os
import os.path
import zipapp


def clean_dir(zipdir):
    if os.path.exists(zipdir):
        shutil.rmtree(zipdir)


def clean_pyz(filename):
    if os.path.exists(filename):
        os.remove(filename)


def create_dir(zipdir):
    os.mkdir(zipdir)


def copy_src(zipdir):
    ignored = shutil.ignore_patterns("__pycache__", ".*")
    shutil.copytree("src", zipdir + "/src", ignore=ignored)


def write_main(zipdir):
    file = open(zipdir + "/__main__.py", "w+")
    file.write("import src.main\n")
    file.write("src.main.wait_main()")
    file.close()


def make_zip(zipdir, filename):
    interp = "/usr/bin/env python3"
    zipapp.create_archive(zipdir, filename, interpreter=interp, compressed=True)


def main():
    zipdir = "zip"
    filename = "NewLang.pyz"
    clean_dir(zipdir)
    clean_pyz(filename)
    create_dir(zipdir)
    copy_src(zipdir)
    write_main(zipdir)
    make_zip(zipdir, filename)
    clean_dir(zipdir)


if __name__ == "__main__":
    main()