From 99dc5d7463236ee9c094736dfbcb56641e782335 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Tue, 24 Apr 2018 22:10:57 +0300 Subject: Add fragment manifest value --- libbpkg/manifest.cxx | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'libbpkg/manifest.cxx') diff --git a/libbpkg/manifest.cxx b/libbpkg/manifest.cxx index 2374b77..ab3acf1 100644 --- a/libbpkg/manifest.cxx +++ b/libbpkg/manifest.cxx @@ -1196,6 +1196,19 @@ namespace bpkg m.sha256sum = move (v); } + else if (n == "fragment") + { + if (!il) + bad_name ("package repository fragment not allowed"); + + if (m.fragment) + bad_name ("package repository fragment redefinition"); + + if (v.empty ()) + bad_value ("empty package repository fragment"); + + m.fragment = move (v); + } else if (!iu) bad_name ("unknown name '" + n + "' in package manifest"); } @@ -1354,6 +1367,9 @@ namespace bpkg if (sha256sum) s.next ("sha256sum", *sha256sum); + if (fragment) + s.next ("fragment", *fragment); + s.next ("", ""); // End of manifest. } @@ -1412,6 +1428,16 @@ namespace bpkg bad_value ("invalid package location"); } } + else if (n == "fragment") + { + if (r.fragment) + bad_name ("package repository fragment redefinition"); + + if (v.empty ()) + bad_value ("empty package repository fragment"); + + r.fragment = move (v); + } else if (!iu) bad_name ("unknown name '" + n + "' in package manifest"); } @@ -1452,6 +1478,9 @@ namespace bpkg s.next ("location", m.location->posix_representation ()); + if (m.fragment) + s.next ("fragment", *m.fragment); + s.next ("", ""); // End of manifest. } @@ -2564,6 +2593,16 @@ namespace bpkg r.certificate = move (v); } + else if (n == "fragment") + { + if (r.fragment) + bad_name ("fragment redefinition"); + + if (v.empty ()) + bad_value ("empty fragment"); + + r.fragment = move (v); + } else if (!iu) bad_name ("unknown name '" + n + "' in repository manifest"); } @@ -2717,6 +2756,9 @@ namespace bpkg s.next ("certificate", *certificate); } + if (fragment) + s.next ("fragment", *fragment); + s.next ("", ""); // End of manifest. } -- cgit v1.1