mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2026-06-09 15:56:39 +00:00
Signed-off-by: kei-g <km.8k6ce+github@gmail.com>
This commit is contained in:
parent
064001b524
commit
74f513d512
@ -169,8 +169,9 @@ struct SDCliParams {
|
|||||||
return 1;
|
return 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto on_help_arg = [&](int argc, const char** argv, int index) {
|
auto on_help_arg = [&](int argc, const char** argv, int index, bool& valid) {
|
||||||
normal_exit = true;
|
normal_exit = true;
|
||||||
|
valid = true;
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -245,6 +245,7 @@ bool parse_options(int argc, const char** argv, const std::vector<ArgOptions>& o
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool valid = false;
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
arg = argv[i];
|
arg = argv[i];
|
||||||
bool found_arg = false;
|
bool found_arg = false;
|
||||||
@ -287,7 +288,7 @@ bool parse_options(int argc, const char** argv, const std::vector<ArgOptions>& o
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
if (match_and_apply(options.manual_options, [&](auto& option) {
|
if (match_and_apply(options.manual_options, [&](auto& option) {
|
||||||
int ret = option.cb(argc, argv, i);
|
int ret = option.cb(argc, argv, i, valid);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
invalid_arg = true;
|
invalid_arg = true;
|
||||||
return;
|
return;
|
||||||
@ -299,7 +300,9 @@ bool parse_options(int argc, const char** argv, const std::vector<ArgOptions>& o
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (invalid_arg) {
|
if (invalid_arg) {
|
||||||
|
if (!valid) {
|
||||||
LOG_ERROR("error: invalid parameter for argument: %s", arg.c_str());
|
LOG_ERROR("error: invalid parameter for argument: %s", arg.c_str());
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!found_arg) {
|
if (!found_arg) {
|
||||||
|
|||||||
@ -56,11 +56,42 @@ struct BoolOption {
|
|||||||
bool* target;
|
bool* target;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ManualFunction {
|
||||||
|
std::function<int(int, const char**, int, bool&)> _func;
|
||||||
|
|
||||||
|
ManualFunction() = default;
|
||||||
|
|
||||||
|
ManualFunction(std::function<int(int argc, const char** argv, int index, bool& valid)> func)
|
||||||
|
: _func(std::move(func)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename F>
|
||||||
|
ManualFunction(F func)
|
||||||
|
: _func(make_function(func)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
int operator()(int argc, const char** argv, int index, bool& valid) const {
|
||||||
|
return _func(argc, argv, index, valid);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
template <typename F>
|
||||||
|
static std::function<int(int, const char**, int, bool&)> make_function(F func) {
|
||||||
|
if constexpr (std::is_invocable_v<F, int, const char**, int, bool&>) {
|
||||||
|
return func;
|
||||||
|
} else {
|
||||||
|
return [func](int argc, const char** argv, int index, bool&) {
|
||||||
|
return func(argc, argv, index);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct ManualOption {
|
struct ManualOption {
|
||||||
std::string short_name;
|
std::string short_name;
|
||||||
std::string long_name;
|
std::string long_name;
|
||||||
std::string desc;
|
std::string desc;
|
||||||
std::function<int(int argc, const char** argv, int index)> cb;
|
ManualFunction cb;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ArgOptions {
|
struct ArgOptions {
|
||||||
|
|||||||
@ -203,8 +203,9 @@ ArgOptions SDSvrParams::get_options() {
|
|||||||
{"", "--color", "colors the logging tags according to level", true, &color},
|
{"", "--color", "colors the logging tags according to level", true, &color},
|
||||||
};
|
};
|
||||||
|
|
||||||
auto on_help_arg = [&](int, const char**, int) {
|
auto on_help_arg = [&](int, const char**, int, bool& valid) {
|
||||||
normal_exit = true;
|
normal_exit = true;
|
||||||
|
valid = true;
|
||||||
return -1;
|
return -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user