Merge pull request #9809 from obsidiansystems/nix-store-add-algo

Add missing `--hash-algo` flag to `nix store add`
This commit is contained in:
John Ericson 2024-01-19 23:37:11 -05:00 committed by GitHub
commit 9b896bf7e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 2 deletions

View file

@ -0,0 +1,7 @@
---
synopsis: Give `nix store add` a `--hash-algo` flag
prs: 9809
---
Adds a missing feature that was present in the old CLI, and matches our
plans to have similar flags for `nix hash convert` and `hash hash path`.

View file

@ -22,6 +22,7 @@ struct CmdAddToStore : MixDryRun, StoreCommand
Path path;
std::optional<std::string> namePart;
ContentAddressMethod caMethod = FileIngestionMethod::Recursive;
HashAlgorithm hashAlgo = HashAlgorithm::SHA256;
CmdAddToStore()
{
@ -51,6 +52,8 @@ struct CmdAddToStore : MixDryRun, StoreCommand
this->caMethod = parseIngestionMethod(s);
}},
});
addFlag(Flag::mkHashAlgoFlag("hash-algo", &hashAlgo));
}
void run(ref<Store> store) override
@ -63,9 +66,9 @@ struct CmdAddToStore : MixDryRun, StoreCommand
auto storePath = dryRun
? store->computeStorePath(
*namePart, accessor, path2, caMethod, HashAlgorithm::SHA256, {}).first
*namePart, accessor, path2, caMethod, hashAlgo, {}).first
: store->addToStoreSlow(
*namePart, accessor, path2, caMethod, HashAlgorithm::SHA256, {}).path;
*namePart, accessor, path2, caMethod, hashAlgo, {}).path;
logger->cout("%s", store->printStorePath(storePath));
}

View file

@ -37,9 +37,11 @@ clearStore
path3=$(nix store add-path ./dummy)
[[ "$path1" == "$path2" ]]
[[ "$path1" == "$path3" ]]
path4=$(nix store add --mode nar --hash-algo sha1 ./dummy)
)
(
path1=$(nix store add --mode flat ./dummy)
path2=$(nix store add-file ./dummy)
[[ "$path1" == "$path2" ]]
path4=$(nix store add --mode flat --hash-algo sha1 ./dummy)
)