MCPcopy Index your code
hub / github.com/AmrDeveloper/FileQL / parse_arguments

Function parse_arguments

src/arguments.rs:37–189  ·  view source on GitHub ↗
(args: &[String])

Source from the content-addressed store, hash-verified

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

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected