#!/usr/bin/env python import sys from octoprint.daemon import Daemon from octoprint.server import Server class Main(Daemon): def __init__(self, pidfile, configfile, basedir, host, port, debug): Daemon.__init__(self, pidfile) self._configfile = configfile self._basedir = basedir self._host = host self._port = port self._debug = debug 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) if "start" == args.daemon: daemon.start() elif "stop" == args.daemon: daemon.stop() elif "restart" == args.daemon: daemon.restart() else: octoprint = Server(args.config, args.basedir, args.host, args.port, args.debug) octoprint.run() if __name__ == "__main__": main()