def on_install_plugins(plugins): if not plugins: return force_user = settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"]) pip_args = settings.global_get(["plugins", "pluginmanager", "pip_args"]) def log(line): click.echo(u"\t{}".format(line)) for plugin in plugins: octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"]) os_compatible = is_os_compatible(plugin["compatibility"]["os"]) compatible = octoprint_compatible and os_compatible if not compatible: if not octoprint_compatible and not os_compatible: click.echo(u"Cannot install plugin {}, it is incompatible to this version of " u"OctoPrint and the underlying operating system".format(plugin["id"])) elif not octoprint_compatible: click.echo(u"Cannot install plugin {}, it is incompatible to this version of " u"OctoPrint".format(plugin["id"])) elif not os_compatible: click.echo(u"Cannot install plugin {}, it is incompatible to the underlying " u"operating system".format(plugin["id"])) continue click.echo(u"Installing plugin {}".format(plugin["id"])) self.__class__._install_plugin(plugin, force_user=force_user, pip_args=pip_args, on_log=log)
def get_assets(self): # OctoPrint 1.5.0+ bundles FontAwesome 5, earlier versions do not css_assets = ["css/eeprom_marlin.css"] if is_octoprint_compatible("<1.5.0"): css_assets += ["css/fontawesome5_stripped.css"] return {"js": ["js/eeprom_marlin.js"], "css": css_assets}
def on_install_plugins(plugins): force_user = self._settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"]) pip_args = self._settings.global_get(["plugins", "pluginmanager", "pip_args"]) def on_log(line): self._logger.info(line) self._send_client_message("logline", dict(line=line, type="stdout")) for plugin in plugins: octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"]) os_compatible = is_os_compatible(plugin["compatibility"]["os"]) compatible = octoprint_compatible and os_compatible if not compatible: if not octoprint_compatible and not os_compatible: self._logger.warn(u"Cannot install plugin {}, it is incompatible to this version " u"of OctoPrint and the underlying operating system".format(plugin["id"])) elif not octoprint_compatible: self._logger.warn(u"Cannot install plugin {}, it is incompatible to this version " u"of OctoPrint".format(plugin["id"])) elif not os_compatible: self._logger.warn(u"Cannot install plugin {}, it is incompatible to the underlying " u"operating system".format(plugin["id"])) self._send_client_message("plugin_incompatible", dict(plugin=plugin["id"], octoprint_compatible=octoprint_compatible, os_compatible=os_compatible)) continue self._logger.info(u"Installing plugin {}".format(plugin["id"])) self._send_client_message("installing_plugin", dict(plugin=plugin["id"])) self.__class__._install_plugin(plugin, force_user=force_user, pip_args=pip_args, on_log=on_log)
def process_blacklist(entries): result = [] if not isinstance(entries, list): return result for entry in entries: if not "plugin" in entry: continue if "octoversions" in entry and not is_octoprint_compatible(*entry["octoversions"]): continue if "version" in entry: logger.debug("Blacklisted plugin: {}, version: {}".format(entry["plugin"], entry["version"])) result.append((entry["plugin"], entry["version"])) elif "versions" in entry: logger.debug("Blacklisted plugin: {}, versions: {}".format(entry["plugin"], ", ".join(entry["versions"]))) for version in entry["versions"]: result.append((entry["plugin"], version)) else: logger.debug("Blacklisted plugin: {}".format(entry["plugin"])) result.append(entry["plugin"]) return result
def get_update_information(self): data = dict( displayName="Backup Scheduler", displayVersion=self._plugin_version, # version check: github repository type="github_release", user="******", repo="OctoPrint-BackupScheduler", current=self._plugin_version, stable_branch=dict( name="Stable", branch="master", comittish=["master"] ), prerelease_branches=[ dict( name="Release Candidate", branch="rc", comittish=["rc", "master"], ) ], # update method: pip pip="https://github.com/jneilliii/OctoPrint-BackupScheduler/archive/{target_version}.zip" ) # if octoprint version is less than 1.6.0, lock update check to specific branch if not version.is_octoprint_compatible(">=1.6.0"): data['type'] = 'github_commit' data['branch'] = '0.0.6' return dict(backupscheduler=data)
def on_install_plugins(plugins): if not plugins: return force_user = settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"]) pip_args = settings.global_get(["plugins", "pluginmanager", "pip_args"]) def log(line): click.echo("\t{}".format(line)) for plugin in plugins: octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"]) os_compatible = is_os_compatible(plugin["compatibility"]["os"]) compatible = octoprint_compatible and os_compatible if not compatible: if not octoprint_compatible and not os_compatible: click.echo("Cannot install plugin {}, it is incompatible to this version of " "OctoPrint and the underlying operating system".format(plugin["id"])) elif not octoprint_compatible: click.echo("Cannot install plugin {}, it is incompatible to this version of " "OctoPrint".format(plugin["id"])) elif not os_compatible: click.echo("Cannot install plugin {}, it is incompatible to the underlying " "operating system".format(plugin["id"])) continue click.echo("Installing plugin {}".format(plugin["id"])) self.__class__._install_plugin(plugin, force_user=force_user, pip_args=pip_args, on_log=log)
def on_install_plugins(plugins): force_user = self._settings.global_get_boolean(["plugins", "pluginmanager", "pip_force_user"]) pip_args = self._settings.global_get(["plugins", "pluginmanager", "pip_args"]) def on_log(line): self._logger.info(line) self._send_client_message("logline", dict(line=line, type="stdout")) for plugin in plugins: octoprint_compatible = is_octoprint_compatible(*plugin["compatibility"]["octoprint"]) os_compatible = is_os_compatible(plugin["compatibility"]["os"]) compatible = octoprint_compatible and os_compatible if not compatible: if not octoprint_compatible and not os_compatible: self._logger.warn("Cannot install plugin {}, it is incompatible to this version " "of OctoPrint and the underlying operating system".format(plugin["id"])) elif not octoprint_compatible: self._logger.warn("Cannot install plugin {}, it is incompatible to this version " "of OctoPrint".format(plugin["id"])) elif not os_compatible: self._logger.warn("Cannot install plugin {}, it is incompatible to the underlying " "operating system".format(plugin["id"])) self._send_client_message("plugin_incompatible", dict(plugin=plugin["id"], octoprint_compatible=octoprint_compatible, os_compatible=os_compatible)) continue self._logger.info("Installing plugin {}".format(plugin["id"])) self._send_client_message("installing_plugin", dict(plugin=plugin["id"])) self.__class__._install_plugin(plugin, force_user=force_user, pip_args=pip_args, on_log=on_log)
def map_repository_entry(entry): result = copy.deepcopy(entry) if not "follow_dependency_links" in result: result["follow_dependency_links"] = False result["is_compatible"] = dict(octoprint=True, os=True) if "compatibility" in entry: if "octoprint" in entry["compatibility"] and entry[ "compatibility"][ "octoprint"] is not None and isinstance( entry["compatibility"]["octoprint"], (list, tuple)) and len( entry["compatibility"]["octoprint"]): result["is_compatible"][ "octoprint"] = is_octoprint_compatible( *entry["compatibility"]["octoprint"], octoprint_version=octoprint_version) if "os" in entry["compatibility"] and entry["compatibility"][ "os"] is not None and isinstance( entry["compatibility"]["os"], (list, tuple)) and len( entry["compatibility"]["os"]): result["is_compatible"]["os"] = self._is_os_compatible( current_os, entry["compatibility"]["os"]) return result
def process_blacklist(entries): result = [] if not isinstance(entries, list): return result for entry in entries: if not "plugin" in entry: continue if "octoversions" in entry and not is_octoprint_compatible(*entry["octoversions"]): continue if "version" in entry: logger.debug("Blacklisted plugin: {}, version: {}".format(entry["plugin"], entry["version"])) result.append((entry["plugin"], entry["version"])) elif "versions" in entry: logger.debug("Blacklisted plugin: {}, versions: {}".format(entry["plugin"], ", ".join(entry["versions"]))) for version in entry["versions"]: result.append((entry["plugin"], version)) else: logger.debug("Blacklisted plugin: {}".format(entry["plugin"])) result.append(entry["plugin"]) return result
def __plugin_check__(): from octoprint.util.version import is_octoprint_compatible compatible = is_octoprint_compatible(">={},<{}".format( BROKEN_VERSION, FIXED_VERSION)) if not compatible: logging.getLogger(__name__).info( "Plugin is not needed in OctoPrint versions < 1.4.0 or >= 1.4.1") return compatible
def __plugin_load__(): if not is_octoprint_compatible(__required_octoprint_version__): import logging logger = logging.getLogger(__name__) logger.error("OctoPrint version is not compatible ({version} required)" .format(version=__required_octoprint_version__)) return global __plugin_implementation__ __plugin_implementation__ = FilamentManagerPlugin() global __plugin_hooks__ __plugin_hooks__ = { "octoprint.plugin.softwareupdate.check_config": __plugin_implementation__.get_update_information, "octoprint.comm.protocol.gcode.sent": __plugin_implementation__.filament_odometer }
def map_repository_entry(entry): result = copy.deepcopy(entry) if not "follow_dependency_links" in result: result["follow_dependency_links"] = False result["is_compatible"] = dict( octoprint=True, os=True ) if "compatibility" in entry: if "octoprint" in entry["compatibility"] and entry["compatibility"]["octoprint"] is not None and isinstance(entry["compatibility"]["octoprint"], (list, tuple)) and len(entry["compatibility"]["octoprint"]): result["is_compatible"]["octoprint"] = is_octoprint_compatible(*entry["compatibility"]["octoprint"], octoprint_version=octoprint_version) if "os" in entry["compatibility"] and entry["compatibility"]["os"] is not None and isinstance(entry["compatibility"]["os"], (list, tuple)) and len(entry["compatibility"]["os"]): result["is_compatible"]["os"] = self._is_os_compatible(current_os, entry["compatibility"]["os"]) return result
def filter_relevant(notification): return "text" in notification and "date" in notification and \ ("versions" not in notification or plugin.version in notification["versions"]) and \ ("octoversions" not in notification or is_octoprint_compatible(*notification["octoversions"], octoprint_version=octoprint_version))
def initialize(self): if is_octoprint_compatible("<=1.3.6"): raise Exception("OctoPrint 1.3.7 or greater required.")
def filter_relevant(notification): return "text" in notification and "date" in notification and \ ("versions" not in notification or plugin.version in notification["versions"]) and \ ("octoversions" not in notification or is_octoprint_compatible(*notification["octoversions"], octoprint_version=octoprint_version))
), "octoprint.comm.protocol.firmware.info": ( __plugin_implementation__.on_firmware_info_received, 100, ), "octoprint.comm.protocol.firmware.capabilities": ( __plugin_implementation__.on_firmware_cap_received, 100, ), "octoprint.events.register_custom_events": register_custom_events, "octoprint.access.permissions": __plugin_implementation__.get_additional_permissions, } if is_octoprint_compatible("<1.6"): __plugin_settings_overlay__ = { "appearance": { "components": { "order": { "sidebar": [ "plugin_firmware_check_warning", "plugin_firmware_check_info", "connection", "state", "files", ] } } } }
########################################### # SIMPLYPRINT OCTOPRINT VERSION CHECK # # SimplyPrint is only working with 1.3.12 # # Older versions need to update # ########################################### try: from octoprint.util.version import is_octoprint_compatible except ImportError: print( "Could not find OctoPrint, are you sure you are installing under the same python installation" "that OctoPrint is installed under?") import sys sys.exit(-1) if not is_octoprint_compatible(">=1.3.12"): print("\n\n----------------------------------------\n\n") print("!! Unsupported OctoPrint version !!\n") print( "SimplyPrint requires at least OctoPrint 1.3.12 to work properly, please update your OctoPrint install\n" ) print( "You can find out more about that here: http://simplyprint.io/redir?r=unsupported-octoprint" ) print("\n") import sys sys.exit(-1) setup_parameters = octoprint_setuptools.create_plugin_setup_parameters( identifier=plugin_identifier, package=plugin_package,
def __plugin_check__(): from octoprint.util.version import is_octoprint_compatible compatible = is_octoprint_compatible(">=1.6.0") if not compatible: logging.getLogger(__name__).info("Backup Scheduler requires OctoPrint 1.6.0+") return compatible