From 4fcd32b536f3d29755b1fecc7e3f06be64f996ca Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Sat, 24 Feb 2018 18:21:39 +0300 Subject: Add support for rep-list and rep-remove, update rep-add --- bpkg/manifest-utility.cxx | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'bpkg/manifest-utility.cxx') diff --git a/bpkg/manifest-utility.cxx b/bpkg/manifest-utility.cxx index ed50298..1500cee 100644 --- a/bpkg/manifest-utility.cxx +++ b/bpkg/manifest-utility.cxx @@ -142,4 +142,30 @@ namespace bpkg assert (false); // Can't be here. return dir_path (); } + + bool + repository_name (const string& s) + { + size_t n (s.size ()); + size_t p (s.find (':')); + + // If it has no scheme or starts with the URL scheme (followed by ://) then + // this is not a canonical name. + // + if (p == string::npos || (p + 2 < n && s[p + 1] == '/' && s[p + 2] == '/')) + return false; + + // This is a canonical name if the scheme is convertible to the repository + // type. + // + try + { + to_repository_type (string (s, 0, p)); + return true; + } + catch (const invalid_argument&) + { + return false; + } + } } -- cgit v1.1