diff --git a/.versioneer-lookup b/.versioneer-lookup index 1042df93..efcad5d0 100644 --- a/.versioneer-lookup +++ b/.versioneer-lookup @@ -16,11 +16,11 @@ prerelease HEAD \(detached.* -# maintenance is currently the branch for preparation of maintenance release 1.3.1 +# maintenance is currently the branch for preparation of maintenance release 1.3.2 # so are any fix/... and improve/... branches -maintenance 1.3.1 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev -fix/.* 1.3.1 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev -improve/.* 1.3.1 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev +maintenance 1.3.2 6393de8c7d42a8bbddcab7cdbb6530ea88a8c82d pep440-dev +fix/.* 1.3.2 6393de8c7d42a8bbddcab7cdbb6530ea88a8c82d pep440-dev +improve/.* 1.3.2 6393de8c7d42a8bbddcab7cdbb6530ea88a8c82d pep440-dev # every other branch is a development branch and thus gets resolved to 1.4.0-dev for now .* 1.4.0 7f5d03d0549bcbd26f40e7e4a3297ea5204fb1cc pep440-dev diff --git a/AUTHORS.md b/AUTHORS.md index 178fe02c..d608322b 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -76,6 +76,7 @@ date of first contribution): * ["I-am-me"](https://github.com/I-am-me) * [J-J Heinonen](https://github.com/jammi) * [Noah Martin](https://github.com/noahsmartin) + * [Eyal Soha](https://github.com/eyal0) OctoPrint started off as a fork of [Cura](https://github.com/daid/Cura) by [Daid Braam](https://github.com/daid). Parts of its communication layer and diff --git a/src/octoprint/cli/__init__.py b/src/octoprint/cli/__init__.py index 9b7d182b..6d17f4a4 100644 --- a/src/octoprint/cli/__init__.py +++ b/src/octoprint/cli/__init__.py @@ -7,6 +7,7 @@ __copyright__ = "Copyright (C) 2015 The OctoPrint Project - Released under terms import click import octoprint +import sys #~~ click context @@ -159,8 +160,11 @@ def octo(ctx, **kwargs): "start|stop|restart\" is deprecated, please use " "\"octoprint daemon start|stop|restart\" from now on") - from octoprint.cli.server import daemon_command - ctx.invoke(daemon_command, command=daemon, **kwargs) + if sys.platform == "linux2": + from octoprint.cli.server import daemon_command + ctx.invoke(daemon_command, command=daemon, **kwargs) + else: + click.echo("Sorry, daemon mode is only supported under Linux right now") else: click.echo("Starting the server via \"octoprint\" is deprecated, " "please use \"octoprint serve\" from now on.") diff --git a/src/octoprint/cli/server.py b/src/octoprint/cli/server.py index d2319136..8f410eb3 100644 --- a/src/octoprint/cli/server.py +++ b/src/octoprint/cli/server.py @@ -121,75 +121,73 @@ def serve_command(ctx, **kwargs): allow_root, logging, verbosity, safe_mode) -@server_commands.command(name="daemon") -@server_options -@daemon_options -@standard_options(hidden=True) -@click.argument("command", type=click.Choice(["start", "stop", "restart", "status"]), - metavar="start|stop|restart|status") -@click.pass_context -def daemon_command(ctx, command, **kwargs): - """ - Starts, stops or restarts in daemon mode. +if sys.platform == "linux2": + # we only support daemon mode under Linux - Please note that daemon mode is only supported under Linux right now. - """ + @server_commands.command(name="daemon") + @server_options + @daemon_options + @standard_options(hidden=True) + @click.argument("command", type=click.Choice(["start", "stop", "restart", "status"]), + metavar="start|stop|restart|status") + @click.pass_context + def daemon_command(ctx, command, **kwargs): + """ + Starts, stops or restarts in daemon mode. - def get_value(key): - return get_ctx_obj_option(ctx, key, kwargs.get(key)) + Please note that daemon mode is only supported under Linux right now. + """ - host = get_value("host") - port = get_value("port") - logging = get_value("logging") - allow_root = get_value("allow_root") - debug = get_value("debug") - pid = get_value("pid") + def get_value(key): + return get_ctx_obj_option(ctx, key, kwargs.get(key)) - basedir = get_value("basedir") - configfile = get_value("configfile") - verbosity = get_value("verbosity") - safe_mode = get_value("safe_mode") + host = get_value("host") + port = get_value("port") + logging = get_value("logging") + allow_root = get_value("allow_root") + debug = get_value("debug") + pid = get_value("pid") - if sys.platform == "darwin" or sys.platform == "win32": - click.echo("Sorry, daemon mode is only supported under Linux right now", - file=sys.stderr) - sys.exit(2) + basedir = get_value("basedir") + configfile = get_value("configfile") + verbosity = get_value("verbosity") + safe_mode = get_value("safe_mode") - if pid is None: - click.echo("No path to a pidfile set", - file=sys.stderr) - sys.exit(1) + if pid is None: + click.echo("No path to a pidfile set", + file=sys.stderr) + sys.exit(1) - from octoprint.daemon import Daemon - class OctoPrintDaemon(Daemon): - def __init__(self, pidfile, basedir, configfile, host, port, debug, allow_root, logging_config, verbosity, safe_mode): - Daemon.__init__(self, pidfile) + from octoprint.daemon import Daemon + class OctoPrintDaemon(Daemon): + def __init__(self, pidfile, basedir, configfile, host, port, debug, allow_root, logging_config, verbosity, safe_mode): + Daemon.__init__(self, pidfile) - self._basedir = basedir - self._configfile = configfile - self._host = host - self._port = port - self._debug = debug - self._allow_root = allow_root - self._logging_config = logging_config - self._verbosity = verbosity - self._safe_mode = safe_mode + self._basedir = basedir + self._configfile = configfile + self._host = host + self._port = port + self._debug = debug + self._allow_root = allow_root + self._logging_config = logging_config + self._verbosity = verbosity + self._safe_mode = safe_mode - def run(self): - run_server(self._basedir, self._configfile, self._host, self._port, self._debug, - self._allow_root, self._logging_config, self._verbosity, self._safe_mode, - octoprint_daemon=self) + def run(self): + run_server(self._basedir, self._configfile, self._host, self._port, self._debug, + self._allow_root, self._logging_config, self._verbosity, self._safe_mode, + octoprint_daemon=self) - octoprint_daemon = OctoPrintDaemon(pid, basedir, configfile, host, port, debug, allow_root, logging, verbosity, - safe_mode) + octoprint_daemon = OctoPrintDaemon(pid, basedir, configfile, host, port, debug, allow_root, logging, verbosity, + safe_mode) - if command == "start": - octoprint_daemon.start() - elif command == "stop": - octoprint_daemon.stop() - elif command == "restart": - octoprint_daemon.restart() - elif command == "status": - octoprint_daemon.status() + if command == "start": + octoprint_daemon.start() + elif command == "stop": + octoprint_daemon.stop() + elif command == "restart": + octoprint_daemon.restart() + elif command == "status": + octoprint_daemon.status() diff --git a/src/octoprint/plugins/pluginmanager/__init__.py b/src/octoprint/plugins/pluginmanager/__init__.py index bcd70bb4..90605517 100644 --- a/src/octoprint/plugins/pluginmanager/__init__.py +++ b/src/octoprint/plugins/pluginmanager/__init__.py @@ -667,6 +667,13 @@ class PluginManagerPlugin(octoprint.plugin.SimpleApiPlugin, octoprint_version_string = octoprint_version_string[:octoprint_version_string.find("-")] octoprint_version = pkg_resources.parse_version(octoprint_version_string) + + # A leading v is common in github release tags and old setuptools doesn't remove it. While OctoPrint's + # versions should never contains such a prefix, we'll make sure to have stuff behave the same + # regardless of setuptools version anyhow. + if octoprint_version and isinstance(octoprint_version, tuple) and octoprint_version[0].lower() == "*v": + octoprint_version = octoprint_version[1:] + if base: if isinstance(octoprint_version, tuple): # old setuptools diff --git a/src/octoprint/plugins/softwareupdate/version_checks/github_release.py b/src/octoprint/plugins/softwareupdate/version_checks/github_release.py index a8867105..5065e3b0 100644 --- a/src/octoprint/plugins/softwareupdate/version_checks/github_release.py +++ b/src/octoprint/plugins/softwareupdate/version_checks/github_release.py @@ -150,6 +150,10 @@ def _get_comparable_version_pkg_resources(version_string, force_base=True): version = pkg_resources.parse_version(version_string) + # A leading v is common in github release tags and old setuptools doesn't remove it. + if version and isinstance(version, tuple) and version[0].lower() == "*v": + version = version[1:] + if force_base: if isinstance(version, tuple): # old setuptools