about summary refs log tree commit diff
path: root/src/nix-hash/nix-hash.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix-hash/nix-hash.cc')
-rw-r--r--src/nix-hash/nix-hash.cc15
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));
+    }
 }