aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libmain/shared.cc16
-rw-r--r--src/libutil/args.hh18
2 files changed, 13 insertions, 21 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 6751a3744..223020378 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -211,9 +211,19 @@ LegacyArgs::LegacyArgs(const std::string & programName,
});
auto intSettingAlias = [&](char shortName, const std::string & longName,
- const std::string & description, const std::string & dest) {
- mkFlag<unsigned int>(shortName, longName, description, [=](unsigned int n) {
- settings.set(dest, std::to_string(n));
+ const std::string & description, const std::string & dest)
+ {
+ addFlag({
+ .longName = longName,
+ .shortName = shortName,
+ .description = description,
+ .labels = {"n"},
+ .handler = {[=](std::string s) {
+ unsigned int n;
+ if (!string2Int(s, n))
+ throw UsageError("'%s' is not an integer", s);
+ settings.set(dest, std::to_string(n));
+ }}
});
};
diff --git a/src/libutil/args.hh b/src/libutil/args.hh
index 3e84ac64a..c54b0efaf 100644
--- a/src/libutil/args.hh
+++ b/src/libutil/args.hh
@@ -174,24 +174,6 @@ public:
});
}
- template<class I>
- void mkFlag(char shortName, const std::string & longName,
- const std::string & description, std::function<void(I)> fun)
- {
- addFlag({
- .longName = longName,
- .shortName = shortName,
- .description = description,
- .labels = {"N"},
- .handler = {[=](std::string s) {
- I n;
- if (!string2Int(s, n))
- throw UsageError("flag '--%s' requires a integer argument", longName);
- fun(n);
- }}
- });
- }
-
void expectArgs(ExpectedArg && arg)
{
expectedArgs.emplace_back(std::move(arg));