aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2020-06-02 18:25:32 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2020-06-02 18:25:32 +0000
commitc664e68b87a3e9e41c4471276886da71793b2d85 (patch)
tree4588e89a54039765077433eb4406953b008e4872
parentc502119fd3b9673e966d5c34ec42cbe18baa17b9 (diff)
Fix to-base --type handler to correctly set std::optional flag
Now that we have a separate flag function, also describe why it is optional.
-rw-r--r--src/libutil/args.cc12
-rw-r--r--src/libutil/args.hh1
-rw-r--r--src/nix/hash.cc2
3 files changed, 14 insertions, 1 deletions
diff --git a/src/libutil/args.cc b/src/libutil/args.cc
index c4035ab85..4fe9539e4 100644
--- a/src/libutil/args.cc
+++ b/src/libutil/args.cc
@@ -166,6 +166,18 @@ Args::Flag Args::Flag::mkHashTypeFlag(std::string && longName, HashType * ht)
};
}
+Args::Flag Args::Flag::mkHashTypeOptFlag(std::string && longName, std::optional<HashType> * oht)
+{
+ return Flag {
+ .longName = std::move(longName),
+ .description = "hash algorithm ('md5', 'sha1', 'sha256', or 'sha512'). Optional as can also be gotten from SRI hash itself.",
+ .labels = {"hash-algo"},
+ .handler = {[oht](std::string s) {
+ *oht = std::optional<HashType> { parseHashType(s) };
+ }}
+ };
+}
+
Strings argvToStrings(int argc, char * * argv)
{
Strings args;
diff --git a/src/libutil/args.hh b/src/libutil/args.hh
index fc8f82af5..f2315f67a 100644
--- a/src/libutil/args.hh
+++ b/src/libutil/args.hh
@@ -85,6 +85,7 @@ protected:
Handler handler;
static Flag mkHashTypeFlag(std::string && longName, HashType * ht);
+ static Flag mkHashTypeOptFlag(std::string && longName, std::optional<HashType> * oht);
};
std::map<std::string, Flag::ptr> longFlags;
diff --git a/src/nix/hash.cc b/src/nix/hash.cc
index 0e24bbaed..d1b5cca72 100644
--- a/src/nix/hash.cc
+++ b/src/nix/hash.cc
@@ -84,7 +84,7 @@ struct CmdToBase : Command
CmdToBase(Base base) : base(base)
{
- addFlag(Flag::mkHashTypeFlag("type", &*ht));
+ addFlag(Flag::mkHashTypeOptFlag("type", &ht));
expectArgs("strings", &args);
}