setup.py 1.8 KB

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