Browse Source

github: URLs for adding remote listings

default_compile_flags
vector-of-bool 3 years ago
parent
commit
272580bd6c
1 changed files with 14 additions and 0 deletions
  1. +14
    -0
      src/dds/pkg/info.cpp

+ 14
- 0
src/dds/pkg/info.cpp View File



#include <neo/url.hpp> #include <neo/url.hpp>
#include <neo/utility.hpp> #include <neo/utility.hpp>
#include <range/v3/distance.hpp>


using namespace dds; using namespace dds;


auto namever_path = replace(leaf, "@", "/"); auto namever_path = replace(leaf, "@", "/");
url.path = (path.parent_path() / "pkg" / namever_path / "sdist.tar.gz").generic_string(); url.path = (path.parent_path() / "pkg" / namever_path / "sdist.tar.gz").generic_string();
return http_remote_listing::from_url(url.to_string()); return http_remote_listing::from_url(url.to_string());
} else if (url.scheme == "github") {
fs::path path = url.path;
if (ranges::distance(path) != 2) {
throw_user_error<errc::invalid_remote_url>(
"github: URLs should have a path with two segments");
}
auto fragment = url.fragment;
if (!fragment) {
throw_user_error<errc::invalid_remote_url>(
"github: URLs should have a fragment naming a Git ref to pull from");
}
auto new_url = fmt::format("https://github.com/{}/archive/{}.tar.gz", url.path, *fragment);
return parse_remote_url(new_url);
} else { } else {
throw_user_error< throw_user_error<
errc::invalid_remote_url>("Unknown scheme '{}' for remote package URL '{}'", errc::invalid_remote_url>("Unknown scheme '{}' for remote package URL '{}'",

Loading…
Cancel
Save