From 841fd78baac507b1e97921afa3c2ebaeb6c65bfd Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 10 Mar 2024 13:56:53 +0100 Subject: [PATCH] GitArchiveInputScheme: Support the narHash attribute This is required to produce a locked flakeref. --- src/libfetchers/github.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libfetchers/github.cc b/src/libfetchers/github.cc index 1ca639419..8100afe4d 100644 --- a/src/libfetchers/github.cc +++ b/src/libfetchers/github.cc @@ -98,6 +98,10 @@ struct GitArchiveInputScheme : InputScheme if (ref) input.attrs.insert_or_assign("ref", *ref); if (host_url) input.attrs.insert_or_assign("host", *host_url); + auto narHash = url.query.find("narHash"); + if (narHash != url.query.end()) + input.attrs.insert_or_assign("narHash", narHash->second); + return input; } @@ -135,10 +139,13 @@ struct GitArchiveInputScheme : InputScheme assert(!(ref && rev)); if (ref) path += "/" + *ref; if (rev) path += "/" + rev->to_string(HashFormat::Base16, false); - return ParsedURL { + auto url = ParsedURL { .scheme = std::string { schemeName() }, .path = path, }; + if (auto narHash = input.getNarHash()) + url.query.insert_or_assign("narHash", narHash->to_string(HashFormat::SRI, true)); + return url; } Input applyOverrides(