diff options
Diffstat (limited to 'src/Conf.cpp')
-rw-r--r-- | src/Conf.cpp | 39 |
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 |