Add missing --hash-algo flag to nix store add

This commit is contained in:
John Ericson 2024-01-19 01:07:26 -05:00
parent 382fa51ff0
commit 356352c370
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; Path path;
std::optional<std::string> namePart; std::optional<std::string> namePart;
ContentAddressMethod caMethod = FileIngestionMethod::Recursive; ContentAddressMethod caMethod = FileIngestionMethod::Recursive;
HashAlgorithm hashAlgo = HashAlgorithm::SHA256;
CmdAddToStore() CmdAddToStore()
{ {
@ -51,6 +52,8 @@ struct CmdAddToStore : MixDryRun, StoreCommand
this->caMethod = parseIngestionMethod(s); this->caMethod = parseIngestionMethod(s);
}}, }},
}); });
addFlag(Flag::mkHashAlgoFlag("hash-algo", &hashAlgo));
} }
void run(ref<Store> store) override void run(ref<Store> store) override
@ -63,9 +66,9 @@ struct CmdAddToStore : MixDryRun, StoreCommand
auto storePath = dryRun auto storePath = dryRun
? store->computeStorePath( ? store->computeStorePath(
*namePart, accessor, path2, caMethod, HashAlgorithm::SHA256, {}).first *namePart, accessor, path2, caMethod, hashAlgo, {}).first
: store->addToStoreSlow( : store->addToStoreSlow(
*namePart, accessor, path2, caMethod, HashAlgorithm::SHA256, {}).path; *namePart, accessor, path2, caMethod, hashAlgo, {}).path;
logger->cout("%s", store->printStorePath(storePath)); logger->cout("%s", store->printStorePath(storePath));
} }

View file

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