72 lines
2.0 KiB
GDScript
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()
|