192 if (argc <= 0 || argv ==
nullptr) {
193 result.
error =
"Invalid argv provided";
200 bool passthrough =
false;
201 for (
int i = 1; i < argc; ++i) {
202 char* current = argv[i];
203 std::string_view token(current);
212 if (absl::StartsWith(token,
"--help=")) {
213 std::string target(token.substr(7));
214 if (!target.empty()) {
221 if (token ==
"--help" || token ==
"-h") {
222 if (i + 1 < argc && argv[i + 1][0] !=
'-') {
231 if (token ==
"--version" || token ==
"-v") {
237 if (token ==
"--list-commands" || token ==
"--list") {
243 if (token ==
"--export-schemas" || token ==
"--export_schemas") {
249 if (token ==
"--self-test" || token ==
"--selftest") {
255 if (token ==
"--tui" || token ==
"--interactive") {
256 absl::SetFlag(&FLAGS_tui,
true);
261 if (token ==
"--quiet" || token ==
"-q") {
262 absl::SetFlag(&FLAGS_quiet,
true);
265 if (absl::StartsWith(token,
"--quiet=")) {
266 std::string value(token.substr(8));
267 absl::SetFlag(&FLAGS_quiet, value ==
"true" || value ==
"1");
272 if (absl::StartsWith(token,
"--rom=")) {
273 absl::SetFlag(&FLAGS_rom, std::string(token.substr(6)));
276 if (token ==
"--rom") {
278 result.
error =
"--rom flag requires a value";
281 absl::SetFlag(&FLAGS_rom, std::string(argv[++i]));
286 if (absl::StartsWith(token,
"--ai_provider=") ||
287 absl::StartsWith(token,
"--ai-provider=")) {
288 size_t eq_pos = token.find(
'=');
289 absl::SetFlag(&FLAGS_ai_provider,
290 std::string(token.substr(eq_pos + 1)));
293 if (token ==
"--ai_provider" || token ==
"--ai-provider") {
295 result.
error =
"--ai-provider flag requires a value";
298 absl::SetFlag(&FLAGS_ai_provider, std::string(argv[++i]));
302 if (absl::StartsWith(token,
"--ai_model=") ||
303 absl::StartsWith(token,
"--ai-model=")) {
304 size_t eq_pos = token.find(
'=');
305 absl::SetFlag(&FLAGS_ai_model, std::string(token.substr(eq_pos + 1)));
308 if (token ==
"--ai_model" || token ==
"--ai-model") {
310 result.
error =
"--ai-model flag requires a value";
313 absl::SetFlag(&FLAGS_ai_model, std::string(argv[++i]));
317 if (absl::StartsWith(token,
"--gemini_api_key=") ||
318 absl::StartsWith(token,
"--gemini-api-key=")) {
319 size_t eq_pos = token.find(
'=');
320 absl::SetFlag(&FLAGS_gemini_api_key,
321 std::string(token.substr(eq_pos + 1)));
324 if (token ==
"--gemini_api_key" || token ==
"--gemini-api-key") {
326 result.
error =
"--gemini-api-key flag requires a value";
329 absl::SetFlag(&FLAGS_gemini_api_key, std::string(argv[++i]));
333 if (absl::StartsWith(token,
"--ollama_host=") ||
334 absl::StartsWith(token,
"--ollama-host=")) {
335 size_t eq_pos = token.find(
'=');
336 absl::SetFlag(&FLAGS_ollama_host,
337 std::string(token.substr(eq_pos + 1)));
340 if (token ==
"--ollama_host" || token ==
"--ollama-host") {
342 result.
error =
"--ollama-host flag requires a value";
345 absl::SetFlag(&FLAGS_ollama_host, std::string(argv[++i]));
349 if (absl::StartsWith(token,
"--prompt_version=") ||
350 absl::StartsWith(token,
"--prompt-version=")) {
351 size_t eq_pos = token.find(
'=');
352 absl::SetFlag(&FLAGS_prompt_version,
353 std::string(token.substr(eq_pos + 1)));
356 if (token ==
"--prompt_version" || token ==
"--prompt-version") {
358 result.
error =
"--prompt-version flag requires a value";
361 absl::SetFlag(&FLAGS_prompt_version, std::string(argv[++i]));
365 if (absl::StartsWith(token,
"--use_function_calling=") ||
366 absl::StartsWith(token,
"--use-function-calling=")) {
367 size_t eq_pos = token.find(
'=');
368 std::string value(token.substr(eq_pos + 1));
369 absl::SetFlag(&FLAGS_use_function_calling,
370 value ==
"true" || value ==
"1");
373 if (token ==
"--use_function_calling" ||
374 token ==
"--use-function-calling") {
376 result.
error =
"--use-function-calling flag requires a value";
379 std::string value(argv[++i]);
380 absl::SetFlag(&FLAGS_use_function_calling,
381 value ==
"true" || value ==
"1");
385#ifdef YAZE_HTTP_API_ENABLED
387 if (absl::StartsWith(token,
"--http-port=") ||
388 absl::StartsWith(token,
"--http_port=")) {
389 size_t eq_pos = token.find(
'=');
391 int port = std::stoi(std::string(token.substr(eq_pos + 1)));
392 absl::SetFlag(&FLAGS_http_port, port);
394 result.
error =
"--http-port requires an integer value";
399 if (token ==
"--http-port" || token ==
"--http_port") {
401 result.
error =
"--http-port flag requires a value";
405 int port = std::stoi(std::string(argv[++i]));
406 absl::SetFlag(&FLAGS_http_port, port);
408 result.
error =
"--http-port requires an integer value";
414 if (absl::StartsWith(token,
"--http-host=") ||
415 absl::StartsWith(token,
"--http_host=")) {
416 size_t eq_pos = token.find(
'=');
417 absl::SetFlag(&FLAGS_http_host, std::string(token.substr(eq_pos + 1)));
420 if (token ==
"--http-host" || token ==
"--http_host") {
422 result.
error =
"--http-host flag requires a value";
425 absl::SetFlag(&FLAGS_http_host, std::string(argv[++i]));