MCPcopy Create free account
hub / github.com/csskit/csskit / run

Method run

crates/csskit/src/commands/find.rs:58–86  ·  view source on GitHub ↗
(&self, config: GlobalConfig)

Source from the content-addressed store, hash-verified

56
57impl Find {
58 pub fn run(&self, config: GlobalConfig) -> CliResult {
59 let selector_bump = Bump::default();
60 let lexer = Lexer::new(&CsskitAtomSet::ATOMS, &self.selector);
61 let mut parser = Parser::new(&selector_bump, &self.selector, lexer);
62 let result = parser.parse_entirely::<QuerySelectorList>();
63
64 if !result.errors.is_empty() || result.output.as_ref().is_some_and(|n| n.metadata().is_invalid) {
65 if let Some(err) = result.errors.first() {
66 eprintln!("error: {}", err.message(&self.selector));
67 } else {
68 eprintln!("Invalid selector '{}'", &self.selector);
69 }
70 self.suggest_types(&self.selector);
71 return Err(CliError::ParseFailed);
72 }
73
74 let Some(selectors) = result.output else {
75 eprintln!("error: failed to parse selector");
76 self.suggest_types(&self.selector);
77 return Err(CliError::ParseFailed);
78 };
79
80 // In JSON mode, --count is ignored: consumers derive counts from results array length.
81 if self.count && !matches!(self.format, OutputFormat::Json) {
82 self.output_count(&selectors)
83 } else {
84 Extract::run(self, config)
85 }
86 }
87
88 fn output_count(&self, selectors: &QuerySelectorList) -> CliResult {
89 let bump = Bump::default();

Callers 2

output_countMethod · 0.45
extractMethod · 0.45

Calls 7

ErrClass · 0.85
as_refMethod · 0.80
suggest_typesMethod · 0.80
output_countMethod · 0.80
runFunction · 0.50
is_emptyMethod · 0.45
metadataMethod · 0.45

Tested by

no test coverage detected