jarvis.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env python
  2. import argparse
  3. from core import ShellGui
  4. from core.MainController import MainController
  5. import signal
  6. import sys
  7. from core.SynapseLauncher import SynapseLauncher
  8. def signal_handler(signal, frame):
  9. print "\n"
  10. print('Ctrl+C pressed. Killing Jarvis')
  11. sys.exit(0)
  12. def main():
  13. """
  14. Entry point of jarvis program
  15. """
  16. # create arguments
  17. parser = argparse.ArgumentParser(description='JARVIS')
  18. parser.add_argument("action", help="[start|gui]")
  19. parser.add_argument("--run-synapse", help="SYNAPSE. Name of a synapse to load surrounded by quote")
  20. parser.add_argument("--brain-file", help="BRAIN_PATH_FILE")
  21. # parse arguments from script parameters
  22. args = parser.parse_args()
  23. print args
  24. if len(sys.argv[1:]) == 0:
  25. parser.print_usage()
  26. sys.exit(1)
  27. # by default, no brain file is set. Use the default one: brain.yml in the root path
  28. brain_file = None
  29. if args.action == "start":
  30. # check if user set a brain.yml file
  31. if args.brain_file:
  32. print "Brain file arg: %s" % args.brain_file
  33. brain_file = args.brain_file
  34. # user set a synapse to start
  35. if args.run_synapse is not None:
  36. print "Run synapse arg: %s" % args.run_synapse
  37. SynapseLauncher.start_synapse(args.run_synapse, brain_file=brain_file)
  38. if args.run_synapse is None:
  39. print "Starting JARVIS. Press Ctrl+C for stopping"
  40. # catch signal for killing on Ctrl+C pressed
  41. signal.signal(signal.SIGINT, signal_handler)
  42. # start the main controller
  43. main_controller = MainController(brain_file=brain_file)
  44. main_controller.start()
  45. if args.action == "gui":
  46. ShellGui()
  47. if __name__ == '__main__':
  48. main()