90 if (argc <= 0 || argv ==
nullptr) {
91 result.
error =
"Invalid argv provided";
98 bool passthrough =
false;
99 for (
int i = 1; i < argc; ++i) {
100 char* current = argv[i];
101 std::string_view token(current);
110 if (absl::StartsWith(token,
"--help=")) {
111 std::string category(token.substr(7));
112 if (!category.empty()) {
119 if (token ==
"--help" || token ==
"-h") {
120 if (i + 1 < argc && argv[i + 1][0] !=
'-') {
129 if (token ==
"--version" || token ==
"-v") {
135 if (token ==
"--list-commands" || token ==
"--list") {
141 if (token ==
"--tui" || token ==
"--interactive") {
142 absl::SetFlag(&FLAGS_tui,
true);
147 if (token ==
"--quiet" || token ==
"-q") {
148 absl::SetFlag(&FLAGS_quiet,
true);
151 if (absl::StartsWith(token,
"--quiet=")) {
152 std::string value(token.substr(8));
153 absl::SetFlag(&FLAGS_quiet, value ==
"true" || value ==
"1");
158 if (absl::StartsWith(token,
"--rom=")) {
159 absl::SetFlag(&FLAGS_rom, std::string(token.substr(6)));
162 if (token ==
"--rom") {
164 result.
error =
"--rom flag requires a value";
167 absl::SetFlag(&FLAGS_rom, std::string(argv[++i]));
172 if (absl::StartsWith(token,
"--ai_provider=") ||
173 absl::StartsWith(token,
"--ai-provider=")) {
174 size_t eq_pos = token.find(
'=');
175 absl::SetFlag(&FLAGS_ai_provider, std::string(token.substr(eq_pos + 1)));
178 if (token ==
"--ai_provider" || token ==
"--ai-provider") {
180 result.
error =
"--ai-provider flag requires a value";
183 absl::SetFlag(&FLAGS_ai_provider, std::string(argv[++i]));
187 if (absl::StartsWith(token,
"--ai_model=") ||
188 absl::StartsWith(token,
"--ai-model=")) {
189 size_t eq_pos = token.find(
'=');
190 absl::SetFlag(&FLAGS_ai_model, std::string(token.substr(eq_pos + 1)));
193 if (token ==
"--ai_model" || token ==
"--ai-model") {
195 result.
error =
"--ai-model flag requires a value";
198 absl::SetFlag(&FLAGS_ai_model, std::string(argv[++i]));
202 if (absl::StartsWith(token,
"--gemini_api_key=") ||
203 absl::StartsWith(token,
"--gemini-api-key=")) {
204 size_t eq_pos = token.find(
'=');
205 absl::SetFlag(&FLAGS_gemini_api_key, std::string(token.substr(eq_pos + 1)));
208 if (token ==
"--gemini_api_key" || token ==
"--gemini-api-key") {
210 result.
error =
"--gemini-api-key flag requires a value";
213 absl::SetFlag(&FLAGS_gemini_api_key, std::string(argv[++i]));
217 if (absl::StartsWith(token,
"--ollama_host=") ||
218 absl::StartsWith(token,
"--ollama-host=")) {
219 size_t eq_pos = token.find(
'=');
220 absl::SetFlag(&FLAGS_ollama_host, std::string(token.substr(eq_pos + 1)));
223 if (token ==
"--ollama_host" || token ==
"--ollama-host") {
225 result.
error =
"--ollama-host flag requires a value";
228 absl::SetFlag(&FLAGS_ollama_host, std::string(argv[++i]));
232 if (absl::StartsWith(token,
"--prompt_version=") ||
233 absl::StartsWith(token,
"--prompt-version=")) {
234 size_t eq_pos = token.find(
'=');
235 absl::SetFlag(&FLAGS_prompt_version, std::string(token.substr(eq_pos + 1)));
238 if (token ==
"--prompt_version" || token ==
"--prompt-version") {
240 result.
error =
"--prompt-version flag requires a value";
243 absl::SetFlag(&FLAGS_prompt_version, std::string(argv[++i]));
247 if (absl::StartsWith(token,
"--use_function_calling=") ||
248 absl::StartsWith(token,
"--use-function-calling=")) {
249 size_t eq_pos = token.find(
'=');
250 std::string value(token.substr(eq_pos + 1));
251 absl::SetFlag(&FLAGS_use_function_calling, value ==
"true" || value ==
"1");
254 if (token ==
"--use_function_calling" || token ==
"--use-function-calling") {
256 result.
error =
"--use-function-calling flag requires a value";
259 std::string value(argv[++i]);
260 absl::SetFlag(&FLAGS_use_function_calling, value ==
"true" || value ==
"1");