1
1
use std:: collections:: BTreeMap ;
2
+ use std:: ops:: Deref ;
2
3
use std:: path:: { Path , PathBuf } ;
3
4
use std:: sync:: atomic:: { AtomicBool , Ordering } ;
4
5
use std:: sync:: Arc ;
5
6
6
7
use anyhow:: Context ;
7
8
use ignore:: { WalkBuilder , WalkState } ;
8
9
9
- use ruff_linter:: settings:: types:: UnsafeFixes ;
10
10
use ruff_linter:: {
11
- display_settings, fs:: normalize_path_to, settings:: types:: FilePattern ,
12
- settings:: types:: PreviewMode ,
11
+ fs:: normalize_path_to, settings:: types:: FilePattern , settings:: types:: PreviewMode ,
13
12
} ;
14
13
use ruff_workspace:: resolver:: match_exclusion;
14
+ use ruff_workspace:: Settings ;
15
15
use ruff_workspace:: {
16
16
configuration:: { Configuration , FormatConfiguration , LintConfiguration , RuleSelection } ,
17
17
pyproject:: { find_user_settings_toml, settings_toml} ,
@@ -24,14 +24,16 @@ pub struct RuffSettings {
24
24
/// The path to this configuration file, used for debugging.
25
25
/// The default fallback configuration does not have a file path.
26
26
path : Option < PathBuf > ,
27
- /// Toggle for unsafe fixes.
28
- unsafe_fixes : UnsafeFixes ,
29
- /// Settings used to manage file inclusion and exclusion.
30
- file_resolver : ruff_workspace:: FileResolverSettings ,
31
- /// Settings to pass into the Ruff linter.
32
- linter : ruff_linter:: settings:: LinterSettings ,
33
- /// Settings to pass into the Ruff formatter.
34
- formatter : ruff_workspace:: FormatterSettings ,
27
+ /// The resolved settings.
28
+ settings : Settings ,
29
+ }
30
+
31
+ impl Deref for RuffSettings {
32
+ type Target = Settings ;
33
+
34
+ fn deref ( & self ) -> & Settings {
35
+ & self . settings
36
+ }
35
37
}
36
38
37
39
pub ( super ) struct RuffSettingsIndex {
@@ -42,15 +44,7 @@ pub(super) struct RuffSettingsIndex {
42
44
43
45
impl std:: fmt:: Display for RuffSettings {
44
46
fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
45
- display_settings ! {
46
- formatter = f,
47
- fields = [
48
- self . file_resolver,
49
- self . linter,
50
- self . formatter
51
- ]
52
- }
53
- Ok ( ( ) )
47
+ std:: fmt:: Display :: fmt ( & self . settings , f)
54
48
}
55
49
}
56
50
@@ -80,32 +74,9 @@ impl RuffSettings {
80
74
81
75
RuffSettings {
82
76
path,
83
- unsafe_fixes : fallback. unsafe_fixes ,
84
- file_resolver : fallback. file_resolver ,
85
- formatter : fallback. formatter ,
86
- linter : fallback. linter ,
77
+ settings : fallback,
87
78
}
88
79
}
89
-
90
- /// Return the [`ruff_workspace::FileResolverSettings`] for this [`RuffSettings`].
91
- pub ( crate ) fn file_resolver ( & self ) -> & ruff_workspace:: FileResolverSettings {
92
- & self . file_resolver
93
- }
94
-
95
- /// Return the [`ruff_linter::settings::LinterSettings`] for this [`RuffSettings`].
96
- pub ( crate ) fn linter ( & self ) -> & ruff_linter:: settings:: LinterSettings {
97
- & self . linter
98
- }
99
-
100
- /// Return the [`ruff_workspace::FormatterSettings`] for this [`RuffSettings`].
101
- pub ( crate ) fn formatter ( & self ) -> & ruff_workspace:: FormatterSettings {
102
- & self . formatter
103
- }
104
-
105
- /// Return the [`UnsafeFixes`] for this [`RuffSettings`].
106
- pub ( crate ) fn unsafe_fixes ( & self ) -> UnsafeFixes {
107
- self . unsafe_fixes
108
- }
109
80
}
110
81
111
82
impl RuffSettingsIndex {
@@ -152,10 +123,7 @@ impl RuffSettingsIndex {
152
123
directory. to_path_buf ( ) ,
153
124
Arc :: new ( RuffSettings {
154
125
path : Some ( pyproject) ,
155
- unsafe_fixes : settings. unsafe_fixes ,
156
- file_resolver : settings. file_resolver ,
157
- linter : settings. linter ,
158
- formatter : settings. formatter ,
126
+ settings,
159
127
} ) ,
160
128
) ;
161
129
break ;
@@ -210,7 +178,7 @@ impl RuffSettingsIndex {
210
178
// Add any settings within the workspace itself
211
179
let mut builder = WalkBuilder :: new ( root) ;
212
180
builder. standard_filters (
213
- respect_gitignore. unwrap_or_else ( || fallback. file_resolver ( ) . respect_gitignore ) ,
181
+ respect_gitignore. unwrap_or_else ( || fallback. file_resolver . respect_gitignore ) ,
214
182
) ;
215
183
builder. hidden ( false ) ;
216
184
builder. threads (
@@ -277,10 +245,7 @@ impl RuffSettingsIndex {
277
245
directory,
278
246
Arc :: new ( RuffSettings {
279
247
path : Some ( pyproject) ,
280
- unsafe_fixes : settings. unsafe_fixes ,
281
- file_resolver : settings. file_resolver ,
282
- linter : settings. linter ,
283
- formatter : settings. formatter ,
248
+ settings,
284
249
} ) ,
285
250
) ;
286
251
}
0 commit comments