package.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import os
  2. import sys
  3. argv = sys.argv[1:]
  4. root_dir = os.path.dirname(os.path.abspath(__file__))
  5. dist_dir = os.path.join(root_dir, "dist")
  6. dist_pypi_dir = os.path.join(dist_dir, "pypi")
  7. def _build():
  8. import shutil
  9. source_dir = os.path.join(root_dir, "source")
  10. shutil.rmtree(os.path.join(source_dir, "__pycache__"), ignore_errors=True)
  11. shutil.rmtree(dist_pypi_dir, ignore_errors=True)
  12. shutil.copytree(source_dir, os.path.join(dist_pypi_dir, "netron"))
  13. shutil.copyfile(
  14. os.path.join(root_dir, "pyproject.toml"),
  15. os.path.join(dist_pypi_dir, "pyproject.toml"))
  16. os.remove(os.path.join(dist_pypi_dir, "netron", "desktop.mjs"))
  17. os.remove(os.path.join(dist_pypi_dir, "netron", "app.js"))
  18. def _install():
  19. import pip._internal.cli.main
  20. pip._internal.cli.main.main(["install", dist_pypi_dir])
  21. def _version():
  22. import json
  23. import re
  24. path = os.path.join(root_dir, "package.json")
  25. with open(path, encoding="utf-8") as file:
  26. package = json.load(file)
  27. version = package["version"]
  28. date = package["date"]
  29. entries = [
  30. ("pyproject.toml", '(version\\s*=\\s*")(.*)(")', version),
  31. ("netron/server.py", '(__version__\\s=\\s")(.*)(")', version),
  32. ("netron/index.html", '(<meta name="version" content=")(.*)(">)', version),
  33. ("netron/index.html", '(<meta name="date" content=")(.*)(">)', date)
  34. ]
  35. for path, regex, value in entries:
  36. path = os.path.join(dist_pypi_dir, path)
  37. with open(path, encoding="utf-8") as file:
  38. content = file.read()
  39. content, count = re.subn(regex, rf"\g<1>{value}\g<3>", content)
  40. if count == 0:
  41. raise ValueError(f"Failed to update '{path}' with '{value}'.")
  42. with open(path, "w", encoding="utf-8") as file:
  43. file.write(content)
  44. def _start():
  45. """ Start server """
  46. sys.path.insert(0, os.path.join(root_dir, "dist", "pypi"))
  47. __import__("netron").main()
  48. argv.clear()
  49. def main():
  50. table = {
  51. "build": _build,
  52. "install": _install,
  53. "version": _version,
  54. "start": _start
  55. }
  56. while len(argv) > 0:
  57. command = argv.pop(0)
  58. del sys.argv[1]
  59. table[command]()
  60. if __name__ == "__main__":
  61. main()