forked from lix-project/lix
Support SCP-like URLs in builtins.fetchGit attrs
This extends https://github.com/NixOS/nix/pull/4978 with supporting the SCP-like urls in expressions like ```nix builtins.fetchGit { url = "git@github.com:NixOS/nix.git"; ref = "master"; } ```
This commit is contained in:
parent
48e35585a6
commit
7cdaae6b9c
1 changed files with 19 additions and 6 deletions
|
@ -76,10 +76,24 @@ std::string fixURIForGit(std::string uri, EvalState & state)
|
|||
return fixURI(uri, state);
|
||||
}
|
||||
|
||||
void addURI(EvalState &state, fetchers::Attrs &attrs, Symbol name, std::string v)
|
||||
{
|
||||
void addURI(
|
||||
EvalState &state,
|
||||
fetchers::Attrs &attrs,
|
||||
Symbol name,
|
||||
std::string v,
|
||||
const std::optional<std::string> type
|
||||
) {
|
||||
string n(name);
|
||||
attrs.emplace(name, n == "url" ? fixURI(v, state) : v);
|
||||
if (n == "url") {
|
||||
if (type == "git") {
|
||||
attrs.emplace("type", "git");
|
||||
attrs.emplace(name, fixURIForGit(v, state));
|
||||
} else {
|
||||
attrs.emplace(name, fixURI(v, state));
|
||||
}
|
||||
} else {
|
||||
attrs.emplace(name, v);
|
||||
}
|
||||
}
|
||||
|
||||
struct FetchTreeParams {
|
||||
|
@ -112,10 +126,9 @@ static void fetchTree(
|
|||
state,
|
||||
attrs,
|
||||
attr.name,
|
||||
state.coerceToString(*attr.pos, *attr.value, context, false, false)
|
||||
state.coerceToString(*attr.pos, *attr.value, context, false, false),
|
||||
type
|
||||
);
|
||||
else if (attr.value->type() == nString)
|
||||
addURI(state, attrs, attr.name, attr.value->string.s);
|
||||
else if (attr.value->type() == nBool)
|
||||
attrs.emplace(attr.name, Explicit<bool>{attr.value->boolean});
|
||||
else if (attr.value->type() == nInt)
|
||||
|
|
Loading…
Reference in a new issue