From 0db3a23b21fe2856f64c5007b27e46a8140f10c0 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 1 Jan 2018 06:42:19 +0100 Subject: Fail build if project.conf contains invalid object or field --- src/Conf.cpp | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'src/Conf.cpp') diff --git a/src/Conf.cpp b/src/Conf.cpp index c487e28..27713d8 100644 --- a/src/Conf.cpp +++ b/src/Conf.cpp @@ -494,6 +494,14 @@ namespace sibs validatePackageName(); } + else if(name.equals("version")) + { + // TODO: Use version for info output when building + } + else if(name.equals("authors")) + { + // TODO: Use authors for something? + } else if(name.equals("type")) { if (value.isSingle()) @@ -618,6 +626,8 @@ namespace sibs else throw ParserException("Expected package.ignore_dirs to be a list, was a single value"); } + else + failInvalidFieldUnderObject(name); } else if(currentObject.equals("config")) { @@ -638,6 +648,8 @@ namespace sibs throw ParserException(errMsg); } } + else + failInvalidFieldUnderObject(name); } else if (currentObject.equals(CONFIG_SYSTEM_PLATFORM)) { @@ -658,6 +670,8 @@ namespace sibs throw ParserException(errMsg); } } + else + failInvalidFieldUnderObject(name); } else if (currentObject.equals(CONFIG_STATIC_DEBUG_PLATFORM)) { @@ -678,6 +692,8 @@ namespace sibs throw ParserException(errMsg); } } + else + failInvalidFieldUnderObject(name); } else if (currentObject.equals(CONFIG_STATIC_RELEASE_PLATFORM)) { @@ -698,6 +714,8 @@ namespace sibs throw ParserException(errMsg); } } + else + failInvalidFieldUnderObject(name); } else if(currentObject.equals("dependencies")) { @@ -712,6 +730,13 @@ namespace sibs else throw ParserException("Expected field under dependencies to be a single value, was a list"); } + else + { + string errMsg = "Invalid config object \""; + errMsg += string(currentObject.data, currentObject.size); + errMsg += "\""; + throw ParserException(errMsg); + } } void SibsConfig::finished() @@ -734,7 +759,17 @@ namespace sibs throw ParserException(errMsg); } } - + + void SibsConfig::failInvalidFieldUnderObject(const StringView &fieldName) const + { + string errMsg = "Invalid field \""; + errMsg += string(fieldName.data, fieldName.size); + errMsg += "\" under object \""; + errMsg += string(currentObject.data, currentObject.size); + errMsg += "\""; + throw ParserException(errMsg); + } + void SibsTestConfig::processObject(StringView name) { currentObject = name; -- cgit v1.2.3