setup.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import subprocess
  2. import sys
  3. import setup_util
  4. import os
  5. def start(args, logfile, errfile):
  6. setup_util.replace_text("hapi/app.js", "localhost", args.database_host)
  7. try:
  8. npm(logfile, errfile)
  9. if os.name == 'nt':
  10. subprocess.Popen("set NODE_ENV=production", shell=True, stderr=errfile, stdout=logfile)
  11. subprocess.Popen("node app", shell=True, cwd="hapi", stderr=errfile, stdout=logfile)
  12. else:
  13. subprocess.Popen("NODE_ENV=production node app", shell=True, cwd="hapi", stderr=errfile, stdout=logfile)
  14. return 0
  15. except subprocess.CalledProcessError:
  16. return 1
  17. def npm(logfile, errfile):
  18. if os.name == 'nt':
  19. subprocess.check_call("copy package.json package.json.dist /y > NUL", shell=True, cwd="hapi", stderr=errfile, stdout=logfile)
  20. setup_util.replace_text("hapi/package.json", ".*mapper.*", "")
  21. try:
  22. subprocess.check_call("npm install", shell=True, cwd="hapi", stderr=errfile, stdout=logfile)
  23. finally:
  24. if os.name == 'nt':
  25. subprocess.check_call("del package.json", shell=True, cwd="hapi", stderr=errfile, stdout=logfile)
  26. subprocess.check_call("ren package.json.dist package.json", shell=True, cwd="hapi", stderr=errfile, stdout=logfile)
  27. def stop(logfile, errfile):
  28. if os.name == 'nt':
  29. subprocess.Popen("taskkill /f /im node.exe > NUL", shell=True, stderr=errfile, stdout=logfile)
  30. return 0
  31. p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
  32. out, err = p.communicate()
  33. for line in out.splitlines():
  34. if 'node app' in line:
  35. pid = int(line.split(None, 2)[1])
  36. try:
  37. os.kill(pid, 15)
  38. except OSError:
  39. pass
  40. return 0