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.

(cherry picked from commit eec9261a75)
This commit is contained in:
Rémi Verschelde 2018-02-25 15:24:33 +01:00
parent cb65617897
commit be771e7165
1 changed files with 4 additions and 14 deletions

View File

@ -215,25 +215,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]
// so it can in theory have 3 or more slices.
if (data_str.get_slice_count(".") < 3) {
EditorNode::get_singleton()->show_warning(TTR("Invalid version.txt format inside templates.")); EditorNode::get_singleton()->show_warning(TTR("Invalid version.txt format inside templates."));
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++;