summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-02-25 15:24:33 +0100
committerRémi Verschelde <rverschelde@gmail.com>2018-02-25 15:24:33 +0100
commiteec9261a75699723f6e4b722910e5bb762b736db (patch)
treecf430d4062c59ca39e596c51cd02e3f490ce6f2c
parent08584b7e2215c852b80dc143cf712ccc73f9cacb (diff)
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.
-rw-r--r--editor/export_template_manager.cpp20
1 files changed, 5 insertions, 15 deletions
diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp
index d0f008bd43..101deb9126 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++;