import os
import sys
argv = sys.argv[1:]
root_dir = os.path.dirname(os.path.abspath(__file__))
dist_dir = os.path.join(root_dir, "dist")
dist_pypi_dir = os.path.join(dist_dir, "pypi")
def _build():
import shutil
source_dir = os.path.join(root_dir, "source")
shutil.rmtree(os.path.join(source_dir, "__pycache__"), ignore_errors=True)
shutil.rmtree(dist_pypi_dir, ignore_errors=True)
shutil.copytree(source_dir, os.path.join(dist_pypi_dir, "netron"))
shutil.copyfile(
os.path.join(root_dir, "pyproject.toml"),
os.path.join(dist_pypi_dir, "pyproject.toml"))
os.remove(os.path.join(dist_pypi_dir, "netron", "desktop.mjs"))
os.remove(os.path.join(dist_pypi_dir, "netron", "app.js"))
def _install():
import pip._internal.cli.main
pip._internal.cli.main.main(["install", dist_pypi_dir])
def _version():
import json
import re
path = os.path.join(root_dir, "package.json")
with open(path, encoding="utf-8") as file:
package = json.load(file)
version = package["version"]
date = package["date"]
entries = [
("pyproject.toml", '(version\\s*=\\s*")(.*)(")', version),
("netron/server.py", '(__version__\\s=\\s")(.*)(")', version),
("netron/index.html", '()', version),
("netron/index.html", '()', date)
]
for path, regex, value in entries:
path = os.path.join(dist_pypi_dir, path)
with open(path, encoding="utf-8") as file:
content = file.read()
content, count = re.subn(regex, rf"\g<1>{value}\g<3>", content)
if count == 0:
raise ValueError(f"Failed to update '{path}' with '{value}'.")
with open(path, "w", encoding="utf-8") as file:
file.write(content)
def _start():
""" Start server """
sys.path.insert(0, os.path.join(root_dir, "dist", "pypi"))
__import__("netron").main()
argv.clear()
def main():
table = {
"build": _build,
"install": _install,
"version": _version,
"start": _start
}
while len(argv) > 0:
command = argv.pop(0)
del sys.argv[1]
table[command]()
if __name__ == "__main__":
main()