MCPcopy Create free account
hub / github.com/AmrDeveloper/GQL / parse_arguments

Function parse_arguments

crates/gitql-cli/src/arguments.rs:38–186  ·  view source on GitHub ↗
(args: &[String])

Source from the content-addressed store, hash-verified

36}
37
38pub fn parse_arguments(args: &[String]) -> Command {
39 let args_len = args.len();
40
41 if args.iter().any(|i| i == "--help" || i == "-h") {
42 return Command::Help;
43 }
44
45 if args.iter().any(|i| i == "--version" || i == "-v") {
46 return Command::Version;
47 }
48
49 let mut optional_query: Option<String> = None;
50 let mut optional_script_file: Option<String> = None;
51 let mut arguments = Arguments::new();
52
53 let mut arg_index = 1;
54 loop {
55 if arg_index >= args_len {
56 break;
57 }
58
59 let arg = &args[arg_index];
60 if !arg.starts_with('-') {
61 return Command::Error(format!("Unknown argument {arg}"));
62 }
63
64 match arg.as_ref() {
65 "--repos" | "-r" => {
66 arg_index += 1;
67 if arg_index >= args_len {
68 let message = format!("Argument {arg} must be followed by one or more path");
69 return Command::Error(message);
70 }
71
72 loop {
73 if arg_index >= args_len {
74 break;
75 }
76
77 let repo = &args[arg_index];
78 if !repo.starts_with('-') {
79 arguments.repos.push(repo.to_string());
80 arg_index += 1;
81 continue;
82 }
83
84 break;
85 }
86 }
87 "--query" | "-q" => {
88 arg_index += 1;
89 if arg_index >= args_len {
90 let message = format!("Argument {arg} must be followed by the query");
91 return Command::Error(message);
92 }
93
94 optional_query = Some(args[arg_index].to_string());
95 arg_index += 1;

Calls 2

lenMethod · 0.45
is_emptyMethod · 0.45

Used in the wild real call sites across dependent graphs

searching dependent graphs…