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.
This commit is contained in:
Rémi Verschelde 2018-02-25 15:24:33 +01:00
parent 08584b7e22
commit eec9261a75
1 changed files with 5 additions and 15 deletions

View File

@ -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.parse_utf8((const char *)data.ptr(), data.size());
data_str = data_str.strip_edges(); data_str = data_str.strip_edges();
if (data_str.get_slice_count("-") != 2 || data_str.get_slice_count(".") != 2) { // Version number should be of the form major.minor[.patch].status[.module_config]
EditorNode::get_singleton()->show_warning(TTR("Invalid version.txt format inside templates.")); // 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); unzClose(pkg);
return; return;
} }
String ver = data_str.get_slice("-", 0); version = data_str;
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;
} }
fc++; fc++;