mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-20 22:20:50 -06:00
Merge topic 'command-line-argument-bool'
62f4a41647Refactor: Use cmCommandLineArgument::setTo{True,Value}()0645d08c98cmCommandLineArgument: Add setToTrue() and setToValue() helpers Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Acked-by: Robert Maynard <robertjmaynard@gmail.com> Merge-request: !7181
This commit is contained in:
@@ -201,7 +201,57 @@ struct cmCommandLineArgument
|
||||
return (parseState == ParseMode::Valid);
|
||||
}
|
||||
|
||||
template <typename... Values>
|
||||
static std::function<FunctionSignature> setToTrue(Values&&... values)
|
||||
{
|
||||
return ArgumentLambdaHelper<FunctionSignature>::generateSetToTrue(
|
||||
std::forward<Values>(values)...);
|
||||
}
|
||||
|
||||
template <typename... Values>
|
||||
static std::function<FunctionSignature> setToValue(Values&&... values)
|
||||
{
|
||||
return ArgumentLambdaHelper<FunctionSignature>::generateSetToValue(
|
||||
std::forward<Values>(values)...);
|
||||
}
|
||||
|
||||
private:
|
||||
template <typename T>
|
||||
class ArgumentLambdaHelper;
|
||||
|
||||
template <typename... CallState>
|
||||
class ArgumentLambdaHelper<bool(const std::string&, CallState...)>
|
||||
{
|
||||
public:
|
||||
static std::function<bool(const std::string&, CallState...)>
|
||||
generateSetToTrue(bool& value1)
|
||||
{
|
||||
return [&value1](const std::string&, CallState&&...) -> bool {
|
||||
value1 = true;
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
static std::function<bool(const std::string&, CallState...)>
|
||||
generateSetToTrue(bool& value1, bool& value2)
|
||||
{
|
||||
return [&value1, &value2](const std::string&, CallState&&...) -> bool {
|
||||
value1 = true;
|
||||
value2 = true;
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
static std::function<bool(const std::string&, CallState...)>
|
||||
generateSetToValue(std::string& value1)
|
||||
{
|
||||
return [&value1](const std::string& arg, CallState&&...) -> bool {
|
||||
value1 = arg;
|
||||
return true;
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
std::string extract_single_value(std::string const& input,
|
||||
ParseMode& parseState) const
|
||||
{
|
||||
|
||||
@@ -565,10 +565,7 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
|
||||
"No install directory specified for --install-prefix",
|
||||
CommandArgument::Values::One, PrefixLambda },
|
||||
CommandArgument{ "--find-package", CommandArgument::Values::Zero,
|
||||
[&](std::string const&, cmake*) -> bool {
|
||||
findPackageMode = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(findPackageMode) },
|
||||
};
|
||||
for (decltype(args.size()) i = 1; i < args.size(); ++i) {
|
||||
std::string const& arg = args[i];
|
||||
@@ -876,10 +873,7 @@ void cmake::SetArgs(const std::vector<std::string>& args)
|
||||
CommandArgument{ "-P", "-P must be followed by a file name.",
|
||||
CommandArgument::Values::One,
|
||||
CommandArgument::RequiresSeparator::No,
|
||||
[&](std::string const&, cmake*) -> bool {
|
||||
scriptMode = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(scriptMode) },
|
||||
CommandArgument{ "-D", "-D must be followed with VAR=VALUE.",
|
||||
CommandArgument::Values::One,
|
||||
CommandArgument::RequiresSeparator::No,
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <climits>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
@@ -262,37 +263,17 @@ int do_cmake(int ac, char const* const* av)
|
||||
return true;
|
||||
} },
|
||||
CommandArgument{ "--system-information", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
sysinfo = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(sysinfo) },
|
||||
CommandArgument{ "-N", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
view_only = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(view_only) },
|
||||
CommandArgument{ "-LAH", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
list_all_cached = true;
|
||||
list_help = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(list_all_cached, list_help) },
|
||||
CommandArgument{ "-LA", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
list_all_cached = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(list_all_cached) },
|
||||
CommandArgument{ "-LH", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
list_cached = true;
|
||||
list_help = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(list_cached, list_help) },
|
||||
CommandArgument{ "-L", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
list_cached = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(list_cached) },
|
||||
CommandArgument{ "-P", "No script specified for argument -P",
|
||||
CommandArgument::Values::One,
|
||||
CommandArgument::RequiresSeparator::No,
|
||||
@@ -510,15 +491,9 @@ int do_build(int ac, char const* const* av)
|
||||
|
||||
std::vector<CommandArgument> arguments = {
|
||||
CommandArgument{ "--preset", CommandArgument::Values::One,
|
||||
[&](std::string const& value) -> bool {
|
||||
presetName = value;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToValue(presetName) },
|
||||
CommandArgument{ "--list-presets", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
listPresets = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(listPresets) },
|
||||
CommandArgument{ "-j", CommandArgument::Values::ZeroOrOne,
|
||||
CommandArgument::RequiresSeparator::No, jLambda },
|
||||
CommandArgument{ "--parallel", CommandArgument::Values::ZeroOrOne,
|
||||
@@ -527,15 +502,9 @@ int do_build(int ac, char const* const* av)
|
||||
CommandArgument{ "--target", CommandArgument::Values::OneOrMore,
|
||||
targetLambda },
|
||||
CommandArgument{ "--config", CommandArgument::Values::One,
|
||||
[&](std::string const& value) -> bool {
|
||||
config = value;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToValue(config) },
|
||||
CommandArgument{ "--clean-first", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
cleanFirst = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(cleanFirst) },
|
||||
CommandArgument{ "--resolve-package-references",
|
||||
CommandArgument::Values::One, resolvePackagesLambda },
|
||||
CommandArgument{ "-v", CommandArgument::Values::Zero, verboseLambda },
|
||||
@@ -545,10 +514,7 @@ int do_build(int ac, char const* const* av)
|
||||
CommandArgument{ "--use-stderr", CommandArgument::Values::Zero,
|
||||
[](std::string const&) -> bool { return true; } },
|
||||
CommandArgument{ "--", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
nativeOptionsPassed = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(nativeOptionsPassed) },
|
||||
};
|
||||
|
||||
if (ac >= 3) {
|
||||
@@ -831,31 +797,16 @@ int do_install(int ac, char const* const* av)
|
||||
|
||||
std::vector<CommandArgument> arguments = {
|
||||
CommandArgument{ "--config", CommandArgument::Values::One,
|
||||
[&](std::string const& value) -> bool {
|
||||
config = value;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToValue(config) },
|
||||
CommandArgument{ "--component", CommandArgument::Values::One,
|
||||
[&](std::string const& value) -> bool {
|
||||
component = value;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument{ "--default-directory-permissions",
|
||||
CommandArgument::Values::One,
|
||||
[&](std::string const& value) -> bool {
|
||||
defaultDirectoryPermissions = value;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToValue(component) },
|
||||
CommandArgument{
|
||||
"--default-directory-permissions", CommandArgument::Values::One,
|
||||
CommandArgument::setToValue(defaultDirectoryPermissions) },
|
||||
CommandArgument{ "--prefix", CommandArgument::Values::One,
|
||||
[&](std::string const& value) -> bool {
|
||||
prefix = value;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToValue(prefix) },
|
||||
CommandArgument{ "--strip", CommandArgument::Values::Zero,
|
||||
[&](std::string const&) -> bool {
|
||||
strip = true;
|
||||
return true;
|
||||
} },
|
||||
CommandArgument::setToTrue(strip) },
|
||||
CommandArgument{ "-v", CommandArgument::Values::Zero, verboseLambda },
|
||||
CommandArgument{ "--verbose", CommandArgument::Values::Zero,
|
||||
verboseLambda }
|
||||
|
||||
Reference in New Issue
Block a user