mirror of
https://github.com/leejet/stable-diffusion.cpp.git
synced 2025-12-12 13:28:37 +00:00
feat: show usage on unknown arg (#767)
This commit is contained in:
parent
f0fa7ddc40
commit
4c6475f917
@ -297,10 +297,12 @@ bool parse_options(int argc, const char** argv, ArgOptions& options) {
|
||||
bool invalid_arg = false;
|
||||
std::string arg;
|
||||
for (int i = 1; i < argc; i++) {
|
||||
bool found_arg = false;
|
||||
arg = argv[i];
|
||||
|
||||
for (auto& option : options.string_options) {
|
||||
if ((option.short_name.size() > 0 && arg == option.short_name) || (option.long_name.size() > 0 && arg == option.long_name)) {
|
||||
found_arg = true;
|
||||
if (++i >= argc) {
|
||||
invalid_arg = true;
|
||||
break;
|
||||
@ -314,6 +316,7 @@ bool parse_options(int argc, const char** argv, ArgOptions& options) {
|
||||
|
||||
for (auto& option : options.int_options) {
|
||||
if ((option.short_name.size() > 0 && arg == option.short_name) || (option.long_name.size() > 0 && arg == option.long_name)) {
|
||||
found_arg = true;
|
||||
if (++i >= argc) {
|
||||
invalid_arg = true;
|
||||
break;
|
||||
@ -327,6 +330,7 @@ bool parse_options(int argc, const char** argv, ArgOptions& options) {
|
||||
|
||||
for (auto& option : options.float_options) {
|
||||
if ((option.short_name.size() > 0 && arg == option.short_name) || (option.long_name.size() > 0 && arg == option.long_name)) {
|
||||
found_arg = true;
|
||||
if (++i >= argc) {
|
||||
invalid_arg = true;
|
||||
break;
|
||||
@ -340,6 +344,7 @@ bool parse_options(int argc, const char** argv, ArgOptions& options) {
|
||||
|
||||
for (auto& option : options.bool_options) {
|
||||
if ((option.short_name.size() > 0 && arg == option.short_name) || (option.long_name.size() > 0 && arg == option.long_name)) {
|
||||
found_arg = true;
|
||||
if (option.keep_true) {
|
||||
*option.target = true;
|
||||
} else {
|
||||
@ -353,6 +358,7 @@ bool parse_options(int argc, const char** argv, ArgOptions& options) {
|
||||
|
||||
for (auto& option : options.manual_options) {
|
||||
if ((option.short_name.size() > 0 && arg == option.short_name) || (option.long_name.size() > 0 && arg == option.long_name)) {
|
||||
found_arg = true;
|
||||
int ret = option.cb(argc, argv, i);
|
||||
if (ret < 0) {
|
||||
invalid_arg = true;
|
||||
@ -364,6 +370,10 @@ bool parse_options(int argc, const char** argv, ArgOptions& options) {
|
||||
if (invalid_arg) {
|
||||
break;
|
||||
}
|
||||
if (!found_arg) {
|
||||
fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (invalid_arg) {
|
||||
fprintf(stderr, "error: invalid parameter for argument: %s\n", arg.c_str());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user