58 lines
1.9 KiB
GDScript
58 lines
1.9 KiB
GDScript
extends RefCounted
|
|
|
|
## Expected format of config is a JSON file like:
|
|
## {
|
|
## "plugin_name": "plugin_updater",
|
|
## "secs_before_check_for_update": 5,
|
|
## "github_repo": "myyk/godot-plugin-updater",
|
|
## "editor_plugin_meta": "PluginUpdaterEditorPlugin"
|
|
## }
|
|
|
|
const PLUGIN_NAME: String = "godot-rapier2d" # This is replaced when code is generated
|
|
const PLUGIN_MAKER_CONFIG_PATH = "res://plugin-updater.json"
|
|
const PLUGIN_USER_CONFIG_PATH_FORMAT = "res://addons/%s/generated/updater/plugin-updater.json"
|
|
const PLUGIN_SKIP_CONFIG_PATH = "res://.godot/plugin-updater-skip.json"
|
|
|
|
static func get_user_config() -> Dictionary:
|
|
return _get_config(PLUGIN_USER_CONFIG_PATH_FORMAT % PLUGIN_NAME)
|
|
|
|
static func get_repo_config() -> Dictionary:
|
|
return _get_config(PLUGIN_MAKER_CONFIG_PATH)
|
|
|
|
static func _get_config(path: String) -> Dictionary:
|
|
var config = {
|
|
secs_before_check_for_update = 5,
|
|
}
|
|
|
|
if !FileAccess.file_exists(path):
|
|
push_error("plugin-updater: Needs a config at " + path)
|
|
|
|
var file: FileAccess = FileAccess.open(path, FileAccess.READ)
|
|
config.merge(JSON.parse_string(file.get_as_text()), true)
|
|
|
|
return config
|
|
|
|
# Skip config is a JSON file like:
|
|
# {
|
|
# "plugin_name_1": "1.0.0"
|
|
# "plugin_name_2": "1.2.3"
|
|
# }
|
|
static func get_skip_config() -> Dictionary:
|
|
if !FileAccess.file_exists(PLUGIN_SKIP_CONFIG_PATH):
|
|
return {}
|
|
|
|
var file: FileAccess = FileAccess.open(PLUGIN_SKIP_CONFIG_PATH, FileAccess.READ)
|
|
if file == null:
|
|
push_error("plugin-updater: Could not open file at " + PLUGIN_SKIP_CONFIG_PATH)
|
|
return {}
|
|
return JSON.parse_string(file.get_as_text())
|
|
|
|
static func save_skip_config(config: Dictionary) -> Error:
|
|
var file: FileAccess = FileAccess.open(PLUGIN_SKIP_CONFIG_PATH, FileAccess.WRITE)
|
|
if file == null:
|
|
push_error("plugin-updater: Could not open file at " + PLUGIN_SKIP_CONFIG_PATH)
|
|
return FileAccess.get_open_error()
|
|
|
|
file.store_string(JSON.stringify(config))
|
|
file.close()
|
|
return OK
|