aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/primops
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2020-04-07 14:00:12 +0200
committerEelco Dolstra <edolstra@gmail.com>2020-04-16 17:29:30 +0200
commit1290411c2d0c62dd1761485f55292dc944eae55d (patch)
treea2e5c4f7d8a63a5fceb56005eded328ef3598112 /src/libexpr/primops
parent2f9789c2e668056898639781eb31544c0e5c765b (diff)
fetchMercurial: Use inputFromAttrs()
Diffstat (limited to 'src/libexpr/primops')
-rw-r--r--src/libexpr/primops/fetchMercurial.cc15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/libexpr/primops/fetchMercurial.cc b/src/libexpr/primops/fetchMercurial.cc
index f18351646..0a1ba49d5 100644
--- a/src/libexpr/primops/fetchMercurial.cc
+++ b/src/libexpr/primops/fetchMercurial.cc
@@ -54,15 +54,14 @@ static void prim_fetchMercurial(EvalState & state, const Pos & pos, Value * * ar
if (evalSettings.pureEval && !rev)
throw Error("in pure evaluation mode, 'fetchMercurial' requires a Mercurial revision");
- auto parsedUrl = parseURL(
- url.find("://") != std::string::npos
- ? "hg+" + url
- : "hg+file://" + url);
- if (rev) parsedUrl.query.insert_or_assign("rev", rev->gitRev());
- if (ref) parsedUrl.query.insert_or_assign("ref", *ref);
- // FIXME: use name
- auto input = fetchers::inputFromURL(parsedUrl);
+ fetchers::Attrs attrs;
+ attrs.insert_or_assign("type", "hg");
+ attrs.insert_or_assign("url", url.find("://") != std::string::npos ? url : "file://" + url);
+ if (ref) attrs.insert_or_assign("ref", *ref);
+ if (rev) attrs.insert_or_assign("rev", rev->gitRev());
+ auto input = fetchers::inputFromAttrs(attrs);
+ // FIXME: use name
auto [tree, input2] = input->fetchTree(state.store);
state.mkAttrs(v, 8);