diff --git a/build.py b/build.py index 65bbc87..cf2c740 100644 --- a/build.py +++ b/build.py @@ -9,13 +9,23 @@ return (2000, 1, 1, 1, 1, 1) -def clean_zip(path): +def open_new_file(path): path.unlink(missing_ok=True) + file = path.open("xb") + mode = path.stat().st_mode + new_mode = mode | 0o100 + path.chmod(new_mode) + return file -def open_zip(path): +def write_shebang(file): + shebang = "#!/usr/bin/env python3\n" + file.write(shebang.encode("utf-8")) + + +def open_zip(file): return zipfile.ZipFile( - path, mode="x", compression=zipfile.ZIP_DEFLATED, compresslevel=9 + file, mode="a", compression=zipfile.ZIP_DEFLATED, compresslevel=9 ) @@ -23,6 +33,10 @@ zip.close() +def close_file(file): + file.close() + + def find_all_src(srcpath): paths = srcpath.glob("**/*") new_paths = [srcpath] @@ -69,13 +83,14 @@ def main(): - filename = pathlib.Path("NewLang.pyz") date = reproducible_date() - clean_zip(filename) - zip = open_zip(filename) + file = open_new_file(pathlib.Path("NewLang.pyz")) + write_shebang(file) + zip = open_zip(file) write_src(zip, date) write_main(zip, date) close_zip(zip) + close_file(file) if __name__ == "__main__":