Godot Plugin Updater
A plugin update wizard for plugins hosted on public GitHub repositories. This plugin checks current plugin versions against latest releases in the respective repositories, and offers to update any that are out-of-date.
Supports plugins for Godot 4.4 through 4.7.1!

Adding A Plugin / Repo
Open the script of the plugin that you want to have automatic updates. This can be found in the plugin's configuration file (ex. plugin.cfg) under the script property (ex. script="plugin.gd").
Including Plugin Updater
If you are going to include the Plugin Updater with your plugin, then just add the following code:
func get_plugin_path() -> String:
return get_script().resource_path.get_base_dir() + "/"
func _enter_tree() -> void:
PluginUpdater.add_plugin(get_plugin_path(), "https://github.com/{USERNAME}/{REPO_NAME}")
func _exit_tree() -> void:
PluginUpdater.remove_plugin(get_plugin_path())
Supporting Plugin Updater
If you'd rather avoid including the Plugin Updater or making it a dependency, but would still like to optionally support it, you can substitute the following code:
func _enter_tree() -> void:
var plugin_repos:Dictionary = ProjectSettings.get_setting("plugin_updater/plugins", {})
plugin_repos[get_plugin_path()] = "https://github.com/{USERNAME}/{REPO_NAME}"
ProjectSettings.set_setting("plugin_updater/plugins", plugin_repos)
ProjectSettings.save()
func _exit_tree() -> void:
var plugin_repos:Dictionary = ProjectSettings.get_setting("plugin_updater/plugins", {})
plugin_repos.erase(get_plugin_path())
ProjectSettings.set_setting("plugin_updater/plugins", plugin_repos)
ProjectSettings.save()
External Requests
The api_client.tscn and download_and_extract.tscn nodes make external requests using the built-in HTTPRequest class. These requests are made when the plugin is enabled, or when the editor starts, and during an update.
Here is an example of the request to check for updates for Plugin Updater:
GET https://api.github.com/repos/Maaack/Godot-Plugin-Updater/releases
Content-Type: application/json
Here is an example of the request to update to the latest release of Plugin Updater:
GET https://api.github.com/repos/Maaack/Godot-Plugin-Updater/zipball/v0.5.0
Testing
The check_plugin_version.tscn and update_plugin.tscn can both be tested manually in the inspector, given a plugin directory and repository URL.
Open up either scene, select the root note in the Scene Tree, and then in the Inspector, fill in the Plugin Directory and Plugin Repo URL. Then press the button to test the scene.
check_plugin_version.tscn will print output to the console.
update_plugin.tscn will make a window visible inside the scene with the requested update information.
Changelog for version v0.5.0
No changelog provided for this version.