diff options
Diffstat (limited to 'libbbot/manifest.cxx')
-rw-r--r-- | libbbot/manifest.cxx | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/libbbot/manifest.cxx b/libbbot/manifest.cxx index 3a31f55..7da3dd4 100644 --- a/libbbot/manifest.cxx +++ b/libbbot/manifest.cxx @@ -455,10 +455,14 @@ namespace bbot if (!name.empty ()) bad_name ("task package name redefinition"); - if (v.empty ()) - bad_value ("empty task package name"); - - name = move (v); + try + { + name = package_name (move (v)); + } + catch (const invalid_argument& e) + { + bad_value (string ("invalid task package name: ") + e.what ()); + } } else if (n == "version") { @@ -584,7 +588,15 @@ namespace bbot // values are valid? // s.next ("", "1"); // Start of manifest. - s.next ("name", name); + + auto bad_value ([&s](const string& d) { + throw serialization (s.name (), d);}); + + if (name.empty ()) + bad_value ("empty task package name"); + + s.next ("name", name.string ()); + s.next ("version", version.string ()); s.next ("repository", repository.string ()); @@ -857,10 +869,14 @@ namespace bbot if (!name.empty ()) bad_name ("result package name redefinition"); - if (v.empty ()) - bad_value ("empty result package name"); - - name = move (v); + try + { + name = package_name (move (v)); + } + catch (const invalid_argument& e) + { + bad_value (string ("invalid result package name: ") + e.what ()); + } } else if (n == "version") { @@ -973,7 +989,15 @@ namespace bbot // values are valid? // s.next ("", "1"); // Start of manifest. - s.next ("name", name); + + auto bad_value ([&s](const string& d) { + throw serialization (s.name (), d);}); + + if (name.empty ()) + bad_value ("empty result package name"); + + s.next ("name", name.string ()); + s.next ("version", version.string ()); s.next ("status", to_string (status)); |