1use crate::models::Feature;
2use colored::*;
3
4pub fn print_features(features: &[Feature], indent: usize, show_description: bool) {
5 let prefix = " ".repeat(indent);
6
7 for feature in features {
8 let is_deprecated = feature
9 .meta
10 .get("deprecated")
11 .and_then(|v| v.as_bool())
12 .unwrap_or(false);
13
14 let feature_name = if is_deprecated {
15 feature.name.truecolor(255, 165, 0).bold()
16 } else {
17 feature.name.bold()
18 };
19
20 println!(
21 "{}{} {} -> {}",
22 prefix,
23 feature_name,
24 format!("[{}]", feature.owner).blue(),
25 feature.path.dimmed()
26 );
27 if show_description {
28 println!("{}Description: {}", prefix, feature.description);
29 }
30
31 if !feature.features.is_empty() {
33 print_features(&feature.features, indent + 1, show_description);
34 }
35 }
36}