features_cli/
printer.rs

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        // Recursively print nested features
32        if !feature.features.is_empty() {
33            print_features(&feature.features, indent + 1, show_description);
34        }
35    }
36}