aboutsummaryrefslogtreecommitdiff
path: root/src/Conf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Conf.cpp')
-rw-r--r--src/Conf.cpp39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/Conf.cpp b/src/Conf.cpp
index 107ad0a..8dd7608 100644
--- a/src/Conf.cpp
+++ b/src/Conf.cpp
@@ -362,12 +362,34 @@ namespace sibs
printf("\n");
*/
- if(currentObject.equals("package") && name.equals("name"))
+ if(currentObject.equals("package"))
{
- if(value.isSingle())
- packageName = string(value.asSingle().data, value.asSingle().size);
- else
- throw ParserException("Expected package.name to be a single value, was a list");
+ if(name.equals("name"))
+ {
+ if (value.isSingle())
+ packageName = string(value.asSingle().data, value.asSingle().size);
+ else
+ throw ParserException("Expected package.name to be a single value, was a list");
+ }
+ else if(name.equals("type"))
+ {
+ if (value.isSingle())
+ {
+ const StringView &packageTypeStr = value.asSingle();
+ if(packageTypeStr.equals("executable"))
+ packageType = PackageType::EXECUTABLE;
+ else if(packageTypeStr.equals("library"))
+ packageType = PackageType::LIBRARY;
+ else
+ {
+ string errMsg = "Expected package.type to be either 'executable' or 'library', was: ";
+ errMsg += string(packageTypeStr.data, packageTypeStr.size);
+ throw ParserException(errMsg);
+ }
+ }
+ else
+ throw ParserException("Expected package.type to be a single value, was a list");
+ }
}
else if(currentObject.equals("dependencies"))
{
@@ -383,4 +405,11 @@ namespace sibs
throw ParserException("Expected field under dependencies to be a single value, was a list");
}
}
+
+ void SibsConfig::finished()
+ {
+ if((int)packageType == -1)
+ throw ParserException("Missing required config package.type. Expected to be one either 'executable' or 'library'");
+ finishedProcessing = true;
+ }
} \ No newline at end of file