aboutsummaryrefslogtreecommitdiff
path: root/src/nix/prefetch.cc
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-03-04 08:24:18 +0100
committereldritch horrors <pennae@lix.systems>2024-03-04 08:24:18 +0100
commitfad1a25e17350e67fc9857ba6ec80ac829efd2ed (patch)
tree9170ac87aeab6210bad7d4767e85812b6fbb376f /src/nix/prefetch.cc
parentb6bb869e52bc4990aeac09aa64025e66e02b780e (diff)
Merge pull request #9805 from yshui/prefetch-unpack
Add --unpack to nix store prefetch-file (cherry picked from commit f51409cf98e9b18f27a6d0240a0aa0c3f37c2fd0) Change-Id: I974b04f3efc8b210a9399a71d3704490cfc2c80c
Diffstat (limited to 'src/nix/prefetch.cc')
-rw-r--r--src/nix/prefetch.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/nix/prefetch.cc b/src/nix/prefetch.cc
index b67d381ca..9f2d6cc57 100644
--- a/src/nix/prefetch.cc
+++ b/src/nix/prefetch.cc
@@ -257,6 +257,7 @@ struct CmdStorePrefetchFile : StoreCommand, MixJSON
{
std::string url;
bool executable = false;
+ bool unpack = false;
std::optional<std::string> name;
HashType hashType = htSHA256;
std::optional<Hash> expectedHash;
@@ -289,6 +290,14 @@ struct CmdStorePrefetchFile : StoreCommand, MixJSON
.handler = {&executable, true},
});
+ addFlag({
+ .longName = "unpack",
+ .description =
+ "Unpack the archive (which must be a tarball or zip file) and add "
+ "the result to the Nix store.",
+ .handler = {&unpack, true},
+ });
+
expectArg("url", &url);
}
@@ -305,7 +314,7 @@ struct CmdStorePrefetchFile : StoreCommand, MixJSON
}
void run(ref<Store> store) override
{
- auto [storePath, hash] = prefetchFile(store, url, name, hashType, expectedHash, false, executable);
+ auto [storePath, hash] = prefetchFile(store, url, name, hashType, expectedHash, unpack, executable);
if (json) {
auto res = nlohmann::json::object();