aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-09-25 13:32:35 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-09-25 14:49:52 +0200
commit8cdb20a6ef2e87839c8e4f4c4e99fdafb7db9299 (patch)
treeb265628099b4a1994ef081f4058f5c420a79c5d7
parenta2ccb6406bb1b016aaf31a47c659d06bce0cfc6a (diff)
Check for location redefinition in repository_manifest constructor
-rw-r--r--bpkg/manifest10
-rw-r--r--bpkg/manifest.cxx6
2 files changed, 11 insertions, 5 deletions
diff --git a/bpkg/manifest b/bpkg/manifest
index 75f87bd..a06eea7 100644
--- a/bpkg/manifest
+++ b/bpkg/manifest
@@ -321,17 +321,17 @@ namespace bpkg
//
repository_location () = default;
- // If the argument is not empty, creates remote/absolute repository
- // location. Throws invalid_argument if the location is a relative
- // path. If the argument is empty, then creates the special empty
+ // If the argument is not empty, create remote/absolute repository
+ // location. Throw invalid_argument if the location is a relative
+ // path. If the argument is empty, then create the special empty
// location.
//
explicit
repository_location (const std::string&);
- // Creates a potentially relative repository location. If base is not
+ // Create a potentially relative repository location. If base is not
// empty, use it to complete the relative location to remote/absolute.
- // Throws invalid_argument if base is not empty but the location is
+ // Throw invalid_argument if base is not empty but the location is
// empty, base itself is relative, or the resulting completed location
// is invalid.
//
diff --git a/bpkg/manifest.cxx b/bpkg/manifest.cxx
index bc1531d..5a3357e 100644
--- a/bpkg/manifest.cxx
+++ b/bpkg/manifest.cxx
@@ -729,6 +729,9 @@ namespace bpkg
void package_manifest::
serialize (serializer& s) const
{
+ // @@ Should we check that all non-optional values are specified ?
+ //
+
s.next ("", "1"); // Start of manifest.
s.next ("name", name);
s.next ("version", version.string ());
@@ -1114,6 +1117,9 @@ namespace bpkg
if (n == "location")
{
+ if (!location.empty ())
+ bad_name ("location redefinition");
+
if (v.empty ())
bad_value ("empty location");