239 if (argc <= 0 || argv ==
nullptr) {
240 result.
error =
"Invalid argv provided";
247 bool passthrough =
false;
248 for (
int i = 1; i < argc; ++i) {
249 char* current = argv[i];
250 absl::string_view token(current);
259 if (absl::StartsWith(token,
"--help=")) {
260 std::string target(token.substr(7));
261 if (!target.empty()) {
268 if (token ==
"--help" || token ==
"-h") {
269 if (i + 1 < argc && argv[i + 1][0] !=
'-') {
278 if (token ==
"--version" || token ==
"-v") {
284 if (token ==
"--list-commands" || token ==
"--list") {
290 if (token ==
"--export-schemas" || token ==
"--export_schemas") {
296 if (token ==
"--self-test" || token ==
"--selftest") {
301 if (token ==
"--tui" || token ==
"--interactive") {
303 "--tui/--interactive was removed; use `z3ed help` for CLI "
309 if (token ==
"--quiet" || token ==
"-q") {
310 absl::SetFlag(&FLAGS_quiet,
true);
313 if (absl::StartsWith(token,
"--quiet=")) {
314 std::string value(token.substr(8));
315 absl::SetFlag(&FLAGS_quiet, value ==
"true" || value ==
"1");
320 if (token ==
"--sandbox") {
321 absl::SetFlag(&FLAGS_sandbox,
true);
324 if (absl::StartsWith(token,
"--sandbox=")) {
325 std::string value(token.substr(10));
326 absl::SetFlag(&FLAGS_sandbox, value ==
"true" || value ==
"1");
331 if (absl::StartsWith(token,
"--rom=")) {
332 absl::SetFlag(&FLAGS_rom, std::string(token.substr(6)));
335 if (token ==
"--rom") {
337 result.
error =
"--rom flag requires a value";
340 absl::SetFlag(&FLAGS_rom, std::string(argv[++i]));
345 if (absl::StartsWith(token,
"--ai_provider=") ||
346 absl::StartsWith(token,
"--ai-provider=")) {
347 size_t eq_pos = token.find(
'=');
348 absl::SetFlag(&FLAGS_ai_provider,
349 std::string(token.substr(eq_pos + 1)));
352 if (token ==
"--ai_provider" || token ==
"--ai-provider") {
354 result.
error =
"--ai-provider flag requires a value";
357 absl::SetFlag(&FLAGS_ai_provider, std::string(argv[++i]));
361 if (absl::StartsWith(token,
"--ai_model=") ||
362 absl::StartsWith(token,
"--ai-model=")) {
363 size_t eq_pos = token.find(
'=');
364 absl::SetFlag(&FLAGS_ai_model, std::string(token.substr(eq_pos + 1)));
367 if (token ==
"--ai_model" || token ==
"--ai-model") {
369 result.
error =
"--ai-model flag requires a value";
372 absl::SetFlag(&FLAGS_ai_model, std::string(argv[++i]));
376 if (absl::StartsWith(token,
"--gemini_api_key=") ||
377 absl::StartsWith(token,
"--gemini-api-key=")) {
378 size_t eq_pos = token.find(
'=');
379 absl::SetFlag(&FLAGS_gemini_api_key,
380 std::string(token.substr(eq_pos + 1)));
383 if (token ==
"--gemini_api_key" || token ==
"--gemini-api-key") {
385 result.
error =
"--gemini-api-key flag requires a value";
388 absl::SetFlag(&FLAGS_gemini_api_key, std::string(argv[++i]));
392 if (absl::StartsWith(token,
"--anthropic_api_key=") ||
393 absl::StartsWith(token,
"--anthropic-api-key=")) {
394 size_t eq_pos = token.find(
'=');
395 absl::SetFlag(&FLAGS_anthropic_api_key,
396 std::string(token.substr(eq_pos + 1)));
399 if (token ==
"--anthropic_api_key" || token ==
"--anthropic-api-key") {
401 result.
error =
"--anthropic-api-key flag requires a value";
404 absl::SetFlag(&FLAGS_anthropic_api_key, std::string(argv[++i]));
408 if (absl::StartsWith(token,
"--gui_server_address=") ||
409 absl::StartsWith(token,
"--gui-server-address=")) {
410 size_t eq_pos = token.find(
'=');
411 absl::SetFlag(&FLAGS_gui_server_address,
412 std::string(token.substr(eq_pos + 1)));
415 if (token ==
"--gui_server_address" || token ==
"--gui-server-address") {
417 result.
error =
"--gui-server-address flag requires a value";
420 absl::SetFlag(&FLAGS_gui_server_address, std::string(argv[++i]));
424 if (absl::StartsWith(token,
"--ollama_host=") ||
425 absl::StartsWith(token,
"--ollama-host=")) {
426 size_t eq_pos = token.find(
'=');
427 absl::SetFlag(&FLAGS_ollama_host,
428 std::string(token.substr(eq_pos + 1)));
431 if (token ==
"--ollama_host" || token ==
"--ollama-host") {
433 result.
error =
"--ollama-host flag requires a value";
436 absl::SetFlag(&FLAGS_ollama_host, std::string(argv[++i]));
440 if (absl::StartsWith(token,
"--mesen-socket=") ||
441 absl::StartsWith(token,
"--mesen_socket=")) {
442 size_t eq_pos = token.find(
'=');
443 absl::SetFlag(&FLAGS_mesen_socket,
444 std::string(token.substr(eq_pos + 1)));
447 if (token ==
"--mesen-socket" || token ==
"--mesen_socket") {
449 result.
error =
"--mesen-socket flag requires a value";
452 absl::SetFlag(&FLAGS_mesen_socket, std::string(argv[++i]));
456 if (absl::StartsWith(token,
"--prompt_version=") ||
457 absl::StartsWith(token,
"--prompt-version=")) {
458 size_t eq_pos = token.find(
'=');
459 absl::SetFlag(&FLAGS_prompt_version,
460 std::string(token.substr(eq_pos + 1)));
463 if (token ==
"--prompt_version" || token ==
"--prompt-version") {
465 result.
error =
"--prompt-version flag requires a value";
468 absl::SetFlag(&FLAGS_prompt_version, std::string(argv[++i]));
472 if (absl::StartsWith(token,
"--use_function_calling=") ||
473 absl::StartsWith(token,
"--use-function-calling=")) {
474 size_t eq_pos = token.find(
'=');
475 std::string value(token.substr(eq_pos + 1));
476 absl::SetFlag(&FLAGS_use_function_calling,
477 value ==
"true" || value ==
"1");
480 if (token ==
"--use_function_calling" ||
481 token ==
"--use-function-calling") {
483 result.
error =
"--use-function-calling flag requires a value";
486 std::string value(argv[++i]);
487 absl::SetFlag(&FLAGS_use_function_calling,
488 value ==
"true" || value ==
"1");
492#ifdef YAZE_HTTP_API_ENABLED
494 if (absl::StartsWith(token,
"--http-port=") ||
495 absl::StartsWith(token,
"--http_port=")) {
496 size_t eq_pos = token.find(
'=');
498 int port = std::stoi(std::string(token.substr(eq_pos + 1)));
499 absl::SetFlag(&FLAGS_http_port, port);
501 result.
error =
"--http-port requires an integer value";
506 if (token ==
"--http-port" || token ==
"--http_port") {
508 result.
error =
"--http-port flag requires a value";
512 int port = std::stoi(std::string(argv[++i]));
513 absl::SetFlag(&FLAGS_http_port, port);
515 result.
error =
"--http-port requires an integer value";
521 if (absl::StartsWith(token,
"--http-host=") ||
522 absl::StartsWith(token,
"--http_host=")) {
523 size_t eq_pos = token.find(
'=');
524 absl::SetFlag(&FLAGS_http_host, std::string(token.substr(eq_pos + 1)));
527 if (token ==
"--http-host" || token ==
"--http_host") {
529 result.
error =
"--http-host flag requires a value";
532 absl::SetFlag(&FLAGS_http_host, std::string(argv[++i]));