MCPcopy Create free account
hub / github.com/ccusage/ccusage / parse_from_with_config

Method parse_from_with_config

rust/crates/ccusage-cli/src/parser.rs:34–85  ·  view source on GitHub ↗
(
        args: I,
        config: &dyn CliConfig,
        default_session_duration_hours: f64,
        version: &'static str,
    )

Source from the content-addressed store, hash-verified

32 }
33
34 pub fn parse_from_with_config<I>(
35 args: I,
36 config: &dyn CliConfig,
37 default_session_duration_hours: f64,
38 version: &'static str,
39 ) -> Result<Self, String>
40 where
41 I: IntoIterator<Item = OsString>,
42 {
43 let mut parser = ArgParser::new(args.into_iter().skip(1).collect())?;
44 normalize_legacy_agent_command_args(&mut parser.args);
45 match control_arg(&parser.args) {
46 Some(ControlArg::Version) => print_version_and_exit(version),
47 Some(ControlArg::Help) => print_help_and_exit(&parser.args),
48 None => {}
49 }
50 if let Some(message) = report_flag_alias_error(&parser.args) {
51 return Err(message);
52 }
53 if let Some(message) = agent_filter_option_error(&parser.args) {
54 return Err(message);
55 }
56 if let Some(message) = unsupported_agent_report_error(&parser.args) {
57 return Err(message);
58 }
59 let mut shared = SharedArgs::with_defaults();
60 config.apply_shared(&mut shared);
61 while let Some(arg) = parser.peek() {
62 if is_command(arg) {
63 break;
64 }
65 if !arg.starts_with('-') {
66 return Err(format!("Unknown command '{arg}'"));
67 }
68 parse_shared_arg(&mut parser, &mut shared)?;
69 }
70
71 let command = match parser.next() {
72 None => None,
73 Some(command) => Some(parse_command(
74 &command,
75 &mut parser,
76 shared.clone(),
77 config,
78 default_session_duration_hours,
79 )?),
80 };
81 if let Some(extra) = parser.next() {
82 return Err(format!("Unexpected argument '{extra}'"));
83 }
84 Ok(Self { command, shared })
85 }
86}
87
88fn control_arg(args: &[String]) -> Option<ControlArg> {

Callers

nothing calls this directly

Calls 13

control_argFunction · 0.85
print_version_and_exitFunction · 0.85
print_help_and_exitFunction · 0.85
report_flag_alias_errorFunction · 0.85
is_commandFunction · 0.85
parse_shared_argFunction · 0.85
parse_commandFunction · 0.85
peekMethod · 0.80
apply_sharedMethod · 0.45

Tested by

no test coverage detected