From eec9261a75699723f6e4b722910e5bb762b736db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Sun, 25 Feb 2018 15:24:33 +0100 Subject: [PATCH] Fix version.txt validation logic for export templates .tpz It assumed that the version would always be `x.y-status`, with no dot possible in `status`, so: - It would not work for 3.0.1-stable (nor 3.0.1.stable with new version logic) - It would not support Mono templates when we provide them The validation it did was not really useful anyway, so we just use the raw string. --- editor/export_template_manager.cpp | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp index d0f008bd434..101deb9126b 100644 --- a/editor/export_template_manager.cpp +++ b/editor/export_template_manager.cpp @@ -217,25 +217,15 @@ void ExportTemplateManager::_install_from_file(const String &p_file, bool p_use_ data_str.parse_utf8((const char *)data.ptr(), data.size()); data_str = data_str.strip_edges(); - if (data_str.get_slice_count("-") != 2 || data_str.get_slice_count(".") != 2) { - EditorNode::get_singleton()->show_warning(TTR("Invalid version.txt format inside templates.")); + // Version number should be of the form major.minor[.patch].status[.module_config] + // so it can in theory have 3 or more slices. + if (data_str.get_slice_count(".") < 3) { + EditorNode::get_singleton()->show_warning(vformat(TTR("Invalid version.txt format inside templates: %s."), data_str)); unzClose(pkg); return; } - String ver = data_str.get_slice("-", 0); - - int major = ver.get_slice(".", 0).to_int(); - int minor = ver.get_slice(".", 1).to_int(); - String rev = data_str.get_slice("-", 1); - - if (!rev.is_valid_identifier()) { - EditorNode::get_singleton()->show_warning(TTR("Invalid version.txt format inside templates. Revision is not a valid identifier.")); - unzClose(pkg); - return; - } - - version = itos(major) + "." + itos(minor) + "-" + rev; + version = data_str; } fc++;