Browse Source

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.
Rémi Verschelde 7 years ago
parent
commit
eec9261a75
1 changed files with 5 additions and 15 deletions
  1. 5 15
      editor/export_template_manager.cpp

+ 5 - 15
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++;