codelens_core/config/
mod.rs1mod file;
4
5pub use file::load_config_file;
6
7use crate::walker::WalkerConfig;
8
9#[derive(Debug, Clone, Default)]
11pub struct Config {
12 pub walker: WalkerConfig,
14 pub filter: FilterConfig,
16 pub output: OutputConfig,
18}
19
20#[derive(Debug, Clone, Default)]
22pub struct FilterConfig {
23 pub excludes: Vec<String>,
25 pub includes: Vec<String>,
27 pub exclude_files: Vec<String>,
29 pub include_files: Vec<String>,
31 pub exclude_dirs: Vec<String>,
33 pub languages: Vec<String>,
35 pub min_lines: Option<usize>,
37 pub max_lines: Option<usize>,
39 pub smart_exclude: bool,
41 pub include_all: bool,
43}
44
45impl FilterConfig {
46 pub fn has_patterns(&self) -> bool {
48 !self.excludes.is_empty()
49 || !self.includes.is_empty()
50 || !self.exclude_files.is_empty()
51 || !self.include_files.is_empty()
52 || !self.exclude_dirs.is_empty()
53 || !self.languages.is_empty()
54 }
55}
56
57#[derive(Debug, Clone)]
59pub struct OutputConfig {
60 pub format: OutputFormatType,
62 pub file: Option<std::path::PathBuf>,
64 pub summary_only: bool,
66 pub sort_by: SortBy,
68 pub top_n: Option<usize>,
70 pub verbose: bool,
72 pub quiet: bool,
74 pub show_git_info: bool,
76}
77
78impl Default for OutputConfig {
79 fn default() -> Self {
80 Self {
81 format: OutputFormatType::Console,
82 file: None,
83 summary_only: false,
84 sort_by: SortBy::Lines,
85 top_n: None,
86 verbose: false,
87 quiet: false,
88 show_git_info: false,
89 }
90 }
91}
92
93#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
95pub enum OutputFormatType {
96 #[default]
97 Console,
98 Json,
99 Csv,
100 Markdown,
101 Html,
102}
103
104#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
106pub enum SortBy {
107 #[default]
108 Lines,
109 Files,
110 Code,
111 Name,
112 Size,
113}