# coding=utf-8 from __future__ import print_function """ Place in ~/.octoprint/plugins & restart server to test: * python_checker and python_updater mechanism * demotion of pip and python setup.py clean output that gets written to stderr but isn't as severe as that would look Plugin will always demand to update itself, multiple consecutive runs are not a problem. """ import time NAME = "Always Update" OLD_VERSION = "1.0.0" NEW_VERSION = "2.0.0" class Foo(object): def get_latest(self, target, check, full_data=None): information = dict(local=dict(name=OLD_VERSION, value=OLD_VERSION), remote=dict(name=NEW_VERSION, value=NEW_VERSION)) current = False return information, current def can_perform_update(self, target, check): return True def perform_update(self, target, check, target_version, log_cb=None): if not callable(log_cb): import sys def log_cb(lines, prefix=None, stream=None, strip=True): if stream == "stdout": f = sys.stdout elif stream == "stderr": f = sys.stderr else: f = None for line in lines: print(line, file=f) log_cb(["Updating Always Update..."]) time.sleep(1) log_cb(["running clean", "recursively removing *.pyc from 'src'"], stream="stdout") log_cb(["'build/lib' does not exist -- can't clean it", "'build/bdist.win32' does not exist -- can't clean it", "'build/scripts-2.7' does not exist -- can't clean it"], stream="stderr") log_cb(["removing 'Development\OctoPrint\OctoPrint\src\octoprint_setuptools\__init__.pyc'"], stream="stdout") time.sleep(1) log_cb(["This should be red"], stream="stderr") log_cb(["You are using pip version 7.1.2, however version 9.0.1 is available.", "You should consider upgrading via the 'python -m pip install --upgrade pip' command."], stream="stderr") time.sleep(3) log_cb(["Done!"]) def get_update_information(): foo = Foo() return dict( always_update=dict( displayName=NAME, displayVersion=OLD_VERSION, type="python_checker", python_checker=foo, python_updater=foo ) ) __plugin_name__ = NAME __plugin_hooks__ = { "octoprint.plugin.softwareupdate.check_config": get_update_information, }