summaryrefslogtreecommitdiff
path: root/common/common.cpp
diff options
context:
space:
mode:
authorbandoti <141645996+bandoti@users.noreply.github.com>2023-11-01 14:42:01 -0300
committerGitHub <noreply@github.com>2023-11-01 19:42:01 +0200
commit0e40806c1cb3bdf9955ed807ffbe212be85b4c67 (patch)
treed7b729e9ff3c29f7c7f4d9cdad186a9698c72ae7 /common/common.cpp
parenta2758d08e44ce3624d233af4d23c6843e2e735b5 (diff)
common : allow caller to handle help/argument exceptions (#3715)
* Allow caller to handle help/argument exceptions * Prepend newline to usage output * Add new gpt_params_parse_ex function to hide arg-parse impl * Fix issue blocking success case * exit instead of returning false * Update common/common.h Co-authored-by: Georgi Gerganov <ggerganov@gmail.com> * Update common/common.cpp Co-authored-by: Georgi Gerganov <ggerganov@gmail.com> --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
Diffstat (limited to 'common/common.cpp')
-rw-r--r--common/common.cpp41
1 files changed, 26 insertions, 15 deletions
diff --git a/common/common.cpp b/common/common.cpp
index dc4865e8..89be4126 100644
--- a/common/common.cpp
+++ b/common/common.cpp
@@ -103,9 +103,24 @@ void process_escapes(std::string& input) {
}
bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
+ bool result = true;
+ try {
+ if (!gpt_params_parse_ex(argc, argv, params)) {
+ gpt_print_usage(argc, argv, gpt_params());
+ exit(0);
+ }
+ }
+ catch (const std::invalid_argument& ex) {
+ fprintf(stderr, ex.what());
+ gpt_print_usage(argc, argv, gpt_params());
+ exit(1);
+ }
+ return result;
+}
+
+bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params) {
bool invalid_param = false;
std::string arg;
- gpt_params default_params;
const std::string arg_prefix = "--";
llama_sampling_params & sparams = params.sparams;
@@ -554,11 +569,8 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
break;
}
} else if (arg == "-h" || arg == "--help") {
- gpt_print_usage(argc, argv, default_params);
-#ifndef LOG_DISABLE_LOGS
- log_print_usage();
-#endif // LOG_DISABLE_LOGS
- exit(0);
+ return false;
+
} else if (arg == "--random-prompt") {
params.random_prompt = true;
} else if (arg == "--in-prefix-bos") {
@@ -617,22 +629,17 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
// End of Parse args for logging parameters
#endif // LOG_DISABLE_LOGS
} else {
- fprintf(stderr, "error: unknown argument: %s\n", arg.c_str());
- gpt_print_usage(argc, argv, default_params);
- exit(1);
+ throw std::invalid_argument("error: unknown argument: " + arg);
}
}
if (invalid_param) {
- fprintf(stderr, "error: invalid parameter for argument: %s\n", arg.c_str());
- gpt_print_usage(argc, argv, default_params);
- exit(1);
+ throw std::invalid_argument("error: invalid parameter for argument: " + arg);
}
if (params.prompt_cache_all &&
(params.interactive || params.interactive_first ||
params.instruct)) {
- fprintf(stderr, "error: --prompt-cache-all not supported in interactive mode yet\n");
- gpt_print_usage(argc, argv, default_params);
- exit(1);
+
+ throw std::invalid_argument("error: --prompt-cache-all not supported in interactive mode yet\n");
}
if (params.escape) {
@@ -651,6 +658,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
void gpt_print_usage(int /*argc*/, char ** argv, const gpt_params & params) {
const llama_sampling_params & sparams = params.sparams;
+ printf("\n");
printf("usage: %s [options]\n", argv[0]);
printf("\n");
printf("options:\n");
@@ -762,6 +770,9 @@ void gpt_print_usage(int /*argc*/, char ** argv, const gpt_params & params) {
printf(" -ld LOGDIR, --logdir LOGDIR\n");
printf(" path under which to save YAML logs (no logging if unset)\n");
printf("\n");
+#ifndef LOG_DISABLE_LOGS
+ log_print_usage();
+#endif // LOG_DISABLE_LOGS
}
std::string get_system_info(const gpt_params & params) {