python.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. ''' Python Server publish script '''
  2. import json
  3. import os
  4. import re
  5. import sys
  6. import shutil
  7. import subprocess
  8. root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  9. dist_dir = os.path.join(root_dir, 'dist')
  10. dist_pypi_dir = os.path.join(dist_dir, 'pypi')
  11. source_dir = os.path.join(root_dir, 'source')
  12. publish_dir = os.path.join(root_dir, 'publish')
  13. def _read(path):
  14. with open(path, 'r', encoding='utf-8') as file:
  15. return file.read()
  16. def _write(path, content):
  17. with open(path, 'w', encoding='utf-8') as file:
  18. file.write(content)
  19. def _update(path, regex, value):
  20. content = _read(path)
  21. def repl(match):
  22. return match.group(1) + value + match.group(3)
  23. content = re.sub(regex, repl, content)
  24. _write(path, content)
  25. def _build():
  26. ''' Build dist/pypi '''
  27. shutil.rmtree(os.path.join(source_dir, '__pycache__'), ignore_errors=True)
  28. shutil.rmtree(dist_pypi_dir, ignore_errors=True)
  29. shutil.copytree(source_dir, os.path.join(dist_pypi_dir, 'netron'))
  30. shutil.copyfile(os.path.join(publish_dir, 'setup.py'), os.path.join(dist_pypi_dir, 'setup.py'))
  31. os.remove(os.path.join(dist_pypi_dir, 'netron', 'electron.js'))
  32. os.remove(os.path.join(dist_pypi_dir, 'netron', 'app.js'))
  33. def _install():
  34. ''' Install dist/pypi '''
  35. args = [ 'python', '-m', 'pip', 'install', dist_pypi_dir ]
  36. try:
  37. subprocess.run(args, check=False)
  38. except (KeyboardInterrupt, SystemExit):
  39. pass
  40. def _version():
  41. ''' Update version '''
  42. package = json.loads(_read('./package.json'))
  43. _update('./dist/pypi/setup.py', '( version=")(.*)(",)', package['version'])
  44. _update('./dist/pypi/netron/server.py',
  45. "(__version__ = ')(.*)(')",
  46. package['version'])
  47. _update('./dist/pypi/netron/index.html',
  48. '(<meta name="version" content=")(.*)(">)',
  49. package['version'])
  50. _update('./dist/pypi/netron/index.html',
  51. '(<meta name="date" content=")(.*)(">)',
  52. package['date'])
  53. def _start():
  54. ''' Start server '''
  55. # args = [ sys.executable, '-c', 'import netron; netron.main();' ] + sys.args
  56. # try:
  57. # subprocess.run(args, env={ 'PYTHONPATH': './dist/pypi' }, check=False)
  58. # except (KeyboardInterrupt, SystemExit):
  59. # pass
  60. sys.path.insert(0, os.path.join(root_dir, 'dist', 'pypi'))
  61. __import__('netron').main()
  62. sys.args = []
  63. del sys.argv[1:]
  64. def main(): # pylint: disable=missing-function-docstring
  65. table = { 'build': _build, 'install': _install, 'version': _version, 'start': _start }
  66. sys.args = sys.argv[1:]
  67. while len(sys.args) > 0:
  68. command = sys.args.pop(0)
  69. del sys.argv[1]
  70. table[command]()
  71. if __name__ == '__main__':
  72. main()