2013-04-15 11:38:35 +00:00
|
|
|
#!/usr/bin/env python
|
2013-03-11 20:00:43 +00:00
|
|
|
import sys
|
|
|
|
from octoprint.daemon import Daemon
|
|
|
|
from octoprint.server import Server
|
2013-01-18 22:23:50 +00:00
|
|
|
|
2013-03-11 20:00:43 +00:00
|
|
|
class Main(Daemon):
|
|
|
|
def __init__(self, pidfile, configfile, basedir, host, port, debug):
|
|
|
|
Daemon.__init__(self, pidfile)
|
2013-01-18 22:32:34 +00:00
|
|
|
|
2013-03-11 20:00:43 +00:00
|
|
|
self._configfile = configfile
|
|
|
|
self._basedir = basedir
|
|
|
|
self._host = host
|
|
|
|
self._port = port
|
|
|
|
self._debug = debug
|
2013-01-18 22:23:50 +00:00
|
|
|
|
2013-03-11 20:00:43 +00:00
|
|
|
def run(self):
|
|
|
|
octoprint = Server(self._configfile, self._basedir, self._host, self._port, self._debug)
|
|
|
|
octoprint.run()
|
|
|
|
|
|
|
|
def main():
|
|
|
|
import argparse
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser(prog="run")
|
|
|
|
|
|
|
|
parser.add_argument("-d", "--debug", action="store_true", dest="debug",
|
|
|
|
help="Enable debug mode")
|
|
|
|
|
|
|
|
parser.add_argument("--host", action="store", type=str, dest="host",
|
|
|
|
help="Specify the host on which to bind the server")
|
|
|
|
parser.add_argument("--port", action="store", type=int, dest="port",
|
|
|
|
help="Specify the port on which to bind the server")
|
|
|
|
|
|
|
|
parser.add_argument("-c", "--config", action="store", dest="config",
|
|
|
|
help="Specify the config file to use. OctoPrint needs to have write access for the settings dialog to work. Defaults to ~/.octoprint/config.yaml")
|
|
|
|
parser.add_argument("-b", "--basedir", action="store", dest="basedir",
|
|
|
|
help="Specify the basedir to use for uploads, timelapses etc. OctoPrint needs to have write access. Defaults to ~/.octoprint")
|
|
|
|
|
|
|
|
parser.add_argument("--daemon", action="store", type=str, choices=["start", "stop", "restart"],
|
|
|
|
help="Daemonize/control daemonized OctoPrint instance (only supported under Linux right now)")
|
|
|
|
parser.add_argument("--pid", action="store", type=str, dest="pidfile", default="/tmp/octoprint.pid",
|
|
|
|
help="Pidfile to use for daemonizing, defaults to /tmp/octoprint.pid")
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
if args.daemon:
|
|
|
|
if sys.platform == "darwin" or sys.platform == "win32":
|
|
|
|
print >> sys.stderr, "Sorry, daemon mode is only supported under Linux right now"
|
|
|
|
sys.exit(2)
|
|
|
|
|
|
|
|
daemon = Main(args.pidfile, args.config, args.basedir, args.host, args.port, args.debug)
|
2013-03-11 20:05:52 +00:00
|
|
|
if "start" == args.daemon:
|
2013-03-11 20:04:56 +00:00
|
|
|
daemon.start()
|
2013-03-11 20:05:52 +00:00
|
|
|
elif "stop" == args.daemon:
|
2013-03-11 20:04:56 +00:00
|
|
|
daemon.stop()
|
2013-03-11 20:05:52 +00:00
|
|
|
elif "restart" == args.daemon:
|
2013-03-11 20:04:56 +00:00
|
|
|
daemon.restart()
|
2013-03-11 20:00:43 +00:00
|
|
|
else:
|
|
|
|
octoprint = Server(args.config, args.basedir, args.host, args.port, args.debug)
|
|
|
|
octoprint.run()
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|