aboutsummaryrefslogtreecommitdiff
path: root/libbpkg/manifest.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2018-07-05 13:54:08 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2018-07-05 13:54:08 +0300
commitdfcbb65ed9b65f392fc250cb91124e4793b49c14 (patch)
treeb1babbf49d386b85a07e7743e973a2d9c63c6913 /libbpkg/manifest.cxx
parentac884344b24112b11cd6cad0a7cf41f036159a22 (diff)
Guess repository type for relative locations and consider git type for all locations with .git extension
Diffstat (limited to 'libbpkg/manifest.cxx')
-rw-r--r--libbpkg/manifest.cxx30
1 files changed, 7 insertions, 23 deletions
diff --git a/libbpkg/manifest.cxx b/libbpkg/manifest.cxx
index dc488de..af2a889 100644
--- a/libbpkg/manifest.cxx
+++ b/libbpkg/manifest.cxx
@@ -2062,13 +2062,14 @@ namespace bpkg
}
case repository_protocol::http:
case repository_protocol::https:
- {
- return url.path->extension () == "git"
- ? repository_type::git
- : repository_type::pkg;
- }
case repository_protocol::file:
{
+ if (url.path->extension () == "git")
+ return repository_type::git;
+
+ if (url.scheme != repository_protocol::file) // HTTP(S)?
+ return repository_type::pkg;
+
return local &&
dir_exists (path_cast<dir_path> (*url.path) / dir_path (".git"))
? repository_type::git
@@ -2751,25 +2752,8 @@ namespace bpkg
{
repository_url u (move (location->value));
- // If the prerequisite repository type is not specified explicitly then
- // we consider it to be the base repository type for the relative
- // location or guess it otherwise.
- //
if (!type)
- {
- if (u.scheme == repository_protocol::file && u.path->relative ())
- {
- type = base_type;
-
- // Strip the URL fragment if the base repository type is dir (see
- // the Repository Manifest documentation for the gory details).
- //
- if (base_type == repository_type::dir)
- u.fragment = nullopt;
- }
- else
- type = guess_type (u, false); // Can't throw.
- }
+ type = guess_type (u, false); // Can't throw.
// Call prerequisite repository location constructor, do not amend
// relative path.