aboutsummaryrefslogtreecommitdiff
path: root/libbbot/manifest.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'libbbot/manifest.cxx')
-rw-r--r--libbbot/manifest.cxx44
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));