diff options
Diffstat (limited to 'src/nix-hash/nix-hash.cc')
-rw-r--r-- | src/nix-hash/nix-hash.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/nix-hash/nix-hash.cc b/src/nix-hash/nix-hash.cc index 23309ff7469e..6a044972afb7 100644 --- a/src/nix-hash/nix-hash.cc +++ b/src/nix-hash/nix-hash.cc @@ -13,13 +13,24 @@ void printHelp() void run(Strings args) { + HashType ht = htMD5; bool flat = false; + for (Strings::iterator i = args.begin(); i != args.end(); i++) + { if (*i == "--flat") flat = true; + else if (*i == "--type") { + ++i; + if (i == args.end()) throw UsageError("`--type' requires an argument"); + if (*i == "md5") ht = htMD5; + else if (*i == "sha1") ht = htSHA1; + else throw UsageError(format("unknown hash type `%1%'") % *i); + } else - cout << format("%1%\n") % (string) - (flat ? hashFile(*i) : hashPath(*i)); + cout << format("%1%\n") % (string) + (flat ? hashFile(*i, ht) : hashPath(*i, ht)); + } } |