diff --git a/addons/mod_loader/mod_loader_utils.gd b/addons/mod_loader/mod_loader_utils.gd index c3579d49..07fe75e0 100644 --- a/addons/mod_loader/mod_loader_utils.gd +++ b/addons/mod_loader/mod_loader_utils.gd @@ -56,9 +56,7 @@ static func log_debug_json_print(message: String, json_printable, mod_name: Stri static func _loader_log(message: String, mod_name: String, log_type: String = "info") -> void: - var ignored_arg := get_cmd_line_arg_value("--log-ignore") - var ignored_names: Array = str2var(ignored_arg) - if ignored_names and mod_name in ignored_names: + if is_mod_name_ignored(mod_name): return var date := "%s " % get_date_time_string() @@ -89,6 +87,16 @@ static func _loader_log(message: String, mod_name: String, log_type: String = "i _write_to_log_file(log_message) +static func is_mod_name_ignored(mod_name: String) -> bool: + var ignored_arg := get_cmd_line_arg_value("--log-ignore") + + if not ignored_arg == "": + var ignored_names: Array = ignored_arg.split(",") + if mod_name in ignored_names: + return true + return false + + static func _write_to_log_file(log_entry: String) -> void: var log_file := File.new() diff --git a/addons/mod_loader/mod_manifest.gd b/addons/mod_loader/mod_manifest.gd index d0e39a6c..35c22aaf 100644 --- a/addons/mod_loader/mod_manifest.gd +++ b/addons/mod_loader/mod_manifest.gd @@ -2,6 +2,7 @@ extends Resource # Stores and validates contents of the manifest set by the user class_name ModManifest +const LOG_NAME := "ModLoader:ModManifest" # Mod name. # Validated by [method is_name_or_namespace_valid] @@ -95,7 +96,7 @@ func get_package_id() -> String: # A valid namespace may only use letters (any case), numbers and underscores # and has to be longer than 3 characters -# /^[a-zA-Z0-9_]{3,}$/ +# a-z A-Z 0-9 _ (longer than 3 characters) static func is_name_or_namespace_valid(name: String) -> bool: var re := RegEx.new() re.compile("^[a-zA-Z0-9_]*$") # alphanumeric and _ @@ -114,14 +115,22 @@ static func is_name_or_namespace_valid(name: String) -> bool: # A valid semantic version should follow this format: {mayor}.{minor}.{patch} # reference https://semver.org/ for details -# /^[0-9]+\\.[0-9]+\\.[0-9]+$/ +# {0-9}.{0-9}.{0-9} (no leading 0, shorter than 16 characters total) static func is_semver_valid(version_number: String) -> bool: var re := RegEx.new() - re.compile("^[0-9]+\\.[0-9]+\\.[0-9]+$") + re.compile("^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$") if re.search(version_number) == null: - printerr('Invalid semantic version: "%s". ' + - 'You may only use numbers and periods in this format {mayor}.{minor}.{patch}' % version_number) + ModLoaderUtils.log_fatal('Invalid semantic version: "%s". ' + + 'You may only use numbers without leading zero and periods following this format {mayor}.{minor}.{patch}' % version_number, + LOG_NAME + ) + return false + + if version_number.length() > 16: + ModLoaderUtils.log_fatal('Invalid semantic version: "%s". ' + + 'Version number must be shorter than 16 characters.', LOG_NAME + ) return false return true