TowerGame/addons/git_describe/settings.gd

72 lines
2.0 KiB
GDScript

@tool
extends RefCounted
const BASE = "addons/git_describe/"
const SETTING_PATH_SETTING = BASE + "describe_setting_path"
const DEFAULT_SETTING_PATH = "application/config/git_describe"
const APPEND_PROJECT_NAME_SETTING = BASE + "append_describe_to_project_name"
const DEFAULT_APPEND_PROJECT_NAME = false
const PROJECT_NAME_SETTING = "application/config/name"
const COMMAND_OPTIONS_SETTING = BASE + "command_options"
const DEFAULT_COMMAND_OPTIONS = "--always"
static var cached_describe: String
static func init_setting(
setting_name: String,
initial_value: Variant,
basic := true
) -> void:
if not ProjectSettings.has_setting(setting_name):
ProjectSettings.set_setting(setting_name, initial_value)
ProjectSettings.set_as_basic(setting_name, basic)
ProjectSettings.set_initial_value(setting_name, initial_value)
static func init_settings() -> void:
init_setting(SETTING_PATH_SETTING, DEFAULT_SETTING_PATH)
init_setting(APPEND_PROJECT_NAME_SETTING, DEFAULT_APPEND_PROJECT_NAME)
init_setting(COMMAND_OPTIONS_SETTING, DEFAULT_COMMAND_OPTIONS, false)
static func append_project_name(describe: String, append: bool) -> void:
if not ProjectSettings.get_setting(APPEND_PROJECT_NAME_SETTING, false):
return
var project_name: String = ProjectSettings.get_setting(
PROJECT_NAME_SETTING
)
var separated_describe: String = " " + describe
match [append, project_name.ends_with(separated_describe)]:
[false, true]:
cached_describe = ""
project_name = project_name.replace(separated_describe, "")
[true, false]:
cached_describe = describe
project_name += separated_describe
ProjectSettings.set_setting(PROJECT_NAME_SETTING, project_name)
ProjectSettings.save()
static func get_command_options() -> String:
return ProjectSettings.get_setting(
COMMAND_OPTIONS_SETTING,
DEFAULT_COMMAND_OPTIONS
)
static func set_describe_setting(value: Variant) -> void:
var describe_setting: String = ProjectSettings.get_setting(
SETTING_PATH_SETTING,
DEFAULT_SETTING_PATH
)
ProjectSettings.set_setting(describe_setting, value)
ProjectSettings.save()