Skip to content

Commit 48aa74b

Browse files
authored
Merge pull request #1639 from cruessler/respect-env-variables
Respect env variables when running gix
2 parents bcdce6e + e9b3db8 commit 48aa74b

File tree

18 files changed

+128
-96
lines changed

18 files changed

+128
-96
lines changed

gix-config/fuzz/fuzz_targets/fuzz_file.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ fn fuzz_mutable_section(
7979
subsection_name,
8080
Cow::Owned(renamed_section_name.clone()),
8181
renamed_subsection_name.clone(),
82-
&mut |_| false,
82+
|_| false,
8383
));
8484

8585
Ok(())

gix-config/src/file/access/comfort.rs

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ use std::borrow::Cow;
22

33
use bstr::BStr;
44

5-
use crate::{file::MetadataFilter, value, AsKey, File};
5+
use crate::file::Metadata;
6+
use crate::{value, AsKey, File};
67

78
/// Comfortable API for accessing values
89
impl File<'_> {
910
/// Like [`string_by()`](File::string_by()), but suitable for statically known `key`s like `remote.origin.url`.
1011
pub fn string(&self, key: impl AsKey) -> Option<Cow<'_, BStr>> {
11-
self.string_filter(key, &mut |_| true)
12+
self.string_filter(key, |_| true)
1213
}
1314

1415
/// Like [`value()`](File::value()), but returning `None` if the string wasn't found.
@@ -20,13 +21,11 @@ impl File<'_> {
2021
subsection_name: Option<&BStr>,
2122
value_name: impl AsRef<str>,
2223
) -> Option<Cow<'_, BStr>> {
23-
self.string_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), &mut |_| {
24-
true
25-
})
24+
self.string_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), |_| true)
2625
}
2726

2827
/// Like [`string_filter_by()`](File::string_filter_by()), but suitable for statically known `key`s like `remote.origin.url`.
29-
pub fn string_filter(&self, key: impl AsKey, filter: &mut MetadataFilter) -> Option<Cow<'_, BStr>> {
28+
pub fn string_filter(&self, key: impl AsKey, filter: impl FnMut(&Metadata) -> bool) -> Option<Cow<'_, BStr>> {
3029
let key = key.try_as_key()?;
3130
self.raw_value_filter_by(key.section_name, key.subsection_name, key.value_name, filter)
3231
.ok()
@@ -38,15 +37,15 @@ impl File<'_> {
3837
section_name: impl AsRef<str>,
3938
subsection_name: Option<&BStr>,
4039
value_name: impl AsRef<str>,
41-
filter: &mut MetadataFilter,
40+
filter: impl FnMut(&Metadata) -> bool,
4241
) -> Option<Cow<'_, BStr>> {
4342
self.raw_value_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), filter)
4443
.ok()
4544
}
4645

4746
/// Like [`path_by()`](File::path_by()), but suitable for statically known `key`s like `remote.origin.url`.
4847
pub fn path(&self, key: impl AsKey) -> Option<crate::Path<'_>> {
49-
self.path_filter(key, &mut |_| true)
48+
self.path_filter(key, |_| true)
5049
}
5150

5251
/// Like [`value()`](File::value()), but returning `None` if the path wasn't found.
@@ -61,13 +60,11 @@ impl File<'_> {
6160
subsection_name: Option<&BStr>,
6261
value_name: impl AsRef<str>,
6362
) -> Option<crate::Path<'_>> {
64-
self.path_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), &mut |_| {
65-
true
66-
})
63+
self.path_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), |_| true)
6764
}
6865

6966
/// Like [`path_filter_by()`](File::path_filter_by()), but suitable for statically known `key`s like `remote.origin.url`.
70-
pub fn path_filter(&self, key: impl AsKey, filter: &mut MetadataFilter) -> Option<crate::Path<'_>> {
67+
pub fn path_filter(&self, key: impl AsKey, filter: impl FnMut(&Metadata) -> bool) -> Option<crate::Path<'_>> {
7168
let key = key.try_as_key()?;
7269
self.path_filter_by(key.section_name, key.subsection_name, key.value_name, filter)
7370
}
@@ -83,7 +80,7 @@ impl File<'_> {
8380
section_name: impl AsRef<str>,
8481
subsection_name: Option<&BStr>,
8582
value_name: impl AsRef<str>,
86-
filter: &mut MetadataFilter,
83+
filter: impl FnMut(&Metadata) -> bool,
8784
) -> Option<crate::Path<'_>> {
8885
self.raw_value_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), filter)
8986
.ok()
@@ -92,7 +89,7 @@ impl File<'_> {
9289

9390
/// Like [`boolean_by()`](File::boolean_by()), but suitable for statically known `key`s like `remote.origin.url`.
9491
pub fn boolean(&self, key: impl AsKey) -> Option<Result<bool, value::Error>> {
95-
self.boolean_filter(key, &mut |_| true)
92+
self.boolean_filter(key, |_| true)
9693
}
9794

9895
/// Like [`value()`](File::value()), but returning `None` if the boolean value wasn't found.
@@ -102,13 +99,15 @@ impl File<'_> {
10299
subsection_name: Option<&BStr>,
103100
value_name: impl AsRef<str>,
104101
) -> Option<Result<bool, value::Error>> {
105-
self.boolean_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), &mut |_| {
106-
true
107-
})
102+
self.boolean_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), |_| true)
108103
}
109104

110105
/// Like [`boolean_filter_by()`](File::boolean_filter_by()), but suitable for statically known `key`s like `remote.origin.url`.
111-
pub fn boolean_filter(&self, key: impl AsKey, filter: &mut MetadataFilter) -> Option<Result<bool, value::Error>> {
106+
pub fn boolean_filter(
107+
&self,
108+
key: impl AsKey,
109+
filter: impl FnMut(&Metadata) -> bool,
110+
) -> Option<Result<bool, value::Error>> {
112111
let key = key.try_as_key()?;
113112
self.boolean_filter_by(key.section_name, key.subsection_name, key.value_name, filter)
114113
}
@@ -119,7 +118,7 @@ impl File<'_> {
119118
section_name: impl AsRef<str>,
120119
subsection_name: Option<&BStr>,
121120
value_name: impl AsRef<str>,
122-
filter: &mut MetadataFilter,
121+
mut filter: impl FnMut(&Metadata) -> bool,
123122
) -> Option<Result<bool, value::Error>> {
124123
let section_name = section_name.as_ref();
125124
let section_ids = self
@@ -142,7 +141,7 @@ impl File<'_> {
142141

143142
/// Like [`integer_by()`](File::integer_by()), but suitable for statically known `key`s like `remote.origin.url`.
144143
pub fn integer(&self, key: impl AsKey) -> Option<Result<i64, value::Error>> {
145-
self.integer_filter(key, &mut |_| true)
144+
self.integer_filter(key, |_| true)
146145
}
147146

148147
/// Like [`value()`](File::value()), but returning an `Option` if the integer wasn't found.
@@ -152,11 +151,15 @@ impl File<'_> {
152151
subsection_name: Option<&BStr>,
153152
value_name: impl AsRef<str>,
154153
) -> Option<Result<i64, value::Error>> {
155-
self.integer_filter_by(section_name, subsection_name, value_name, &mut |_| true)
154+
self.integer_filter_by(section_name, subsection_name, value_name, |_| true)
156155
}
157156

158157
/// Like [`integer_filter_by()`](File::integer_filter_by()), but suitable for statically known `key`s like `remote.origin.url`.
159-
pub fn integer_filter(&self, key: impl AsKey, filter: &mut MetadataFilter) -> Option<Result<i64, value::Error>> {
158+
pub fn integer_filter(
159+
&self,
160+
key: impl AsKey,
161+
filter: impl FnMut(&Metadata) -> bool,
162+
) -> Option<Result<i64, value::Error>> {
160163
let key = key.try_as_key()?;
161164
self.integer_filter_by(key.section_name, key.subsection_name, key.value_name, filter)
162165
}
@@ -167,7 +170,7 @@ impl File<'_> {
167170
section_name: impl AsRef<str>,
168171
subsection_name: Option<&BStr>,
169172
value_name: impl AsRef<str>,
170-
filter: &mut MetadataFilter,
173+
filter: impl FnMut(&Metadata) -> bool,
171174
) -> Option<Result<i64, value::Error>> {
172175
let int = self
173176
.raw_value_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), filter)
@@ -196,7 +199,7 @@ impl File<'_> {
196199
}
197200

198201
/// Like [`strings_filter_by()`](File::strings_filter_by()), but suitable for statically known `key`s like `remote.origin.url`.
199-
pub fn strings_filter(&self, key: impl AsKey, filter: &mut MetadataFilter) -> Option<Vec<Cow<'_, BStr>>> {
202+
pub fn strings_filter(&self, key: impl AsKey, filter: impl FnMut(&Metadata) -> bool) -> Option<Vec<Cow<'_, BStr>>> {
200203
let key = key.try_as_key()?;
201204
self.strings_filter_by(key.section_name, key.subsection_name, key.value_name, filter)
202205
}
@@ -207,15 +210,15 @@ impl File<'_> {
207210
section_name: impl AsRef<str>,
208211
subsection_name: Option<&BStr>,
209212
value_name: impl AsRef<str>,
210-
filter: &mut MetadataFilter,
213+
filter: impl FnMut(&Metadata) -> bool,
211214
) -> Option<Vec<Cow<'_, BStr>>> {
212215
self.raw_values_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), filter)
213216
.ok()
214217
}
215218

216219
/// Like [`integers()`](File::integers()), but suitable for statically known `key`s like `remote.origin.url`.
217220
pub fn integers(&self, key: impl AsKey) -> Option<Result<Vec<i64>, value::Error>> {
218-
self.integers_filter(key, &mut |_| true)
221+
self.integers_filter(key, |_| true)
219222
}
220223

221224
/// Similar to [`values_by(…)`](File::values_by()) but returning integers if at least one of them was found
@@ -226,16 +229,14 @@ impl File<'_> {
226229
subsection_name: Option<&BStr>,
227230
value_name: impl AsRef<str>,
228231
) -> Option<Result<Vec<i64>, value::Error>> {
229-
self.integers_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), &mut |_| {
230-
true
231-
})
232+
self.integers_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), |_| true)
232233
}
233234

234235
/// Like [`integers_filter_by()`](File::integers_filter_by()), but suitable for statically known `key`s like `remote.origin.url`.
235236
pub fn integers_filter(
236237
&self,
237238
key: impl AsKey,
238-
filter: &mut MetadataFilter,
239+
filter: impl FnMut(&Metadata) -> bool,
239240
) -> Option<Result<Vec<i64>, value::Error>> {
240241
let key = key.try_as_key()?;
241242
self.integers_filter_by(key.section_name, key.subsection_name, key.value_name, filter)
@@ -248,7 +249,7 @@ impl File<'_> {
248249
section_name: impl AsRef<str>,
249250
subsection_name: Option<&BStr>,
250251
value_name: impl AsRef<str>,
251-
filter: &mut MetadataFilter,
252+
filter: impl FnMut(&Metadata) -> bool,
252253
) -> Option<Result<Vec<i64>, value::Error>> {
253254
self.raw_values_filter_by(section_name.as_ref(), subsection_name, value_name.as_ref(), filter)
254255
.ok()

gix-config/src/file/access/mutate.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ use std::borrow::Cow;
33
use bstr::BStr;
44
use gix_features::threading::OwnShared;
55

6+
use crate::file::Metadata;
67
use crate::{
7-
file::{self, rename_section, write::ends_with_newline, MetadataFilter, SectionBodyIdsLut, SectionId, SectionMut},
8+
file::{self, rename_section, write::ends_with_newline, SectionBodyIdsLut, SectionId, SectionMut},
89
lookup,
910
parse::{section, Event, FrontMatterEvents},
1011
File,
@@ -61,7 +62,7 @@ impl<'event> File<'event> {
6162
name: impl AsRef<str>,
6263
subsection_name: Option<&BStr>,
6364
) -> Result<SectionMut<'a, 'event>, section::header::Error> {
64-
self.section_mut_or_create_new_filter(name, subsection_name, &mut |_| true)
65+
self.section_mut_or_create_new_filter(name, subsection_name, |_| true)
6566
}
6667

6768
/// Returns an mutable section with a given `name` and optional `subsection_name`, _if it exists_ **and** passes `filter`, or create
@@ -70,7 +71,7 @@ impl<'event> File<'event> {
7071
&'a mut self,
7172
name: impl AsRef<str>,
7273
subsection_name: Option<&BStr>,
73-
filter: &mut MetadataFilter,
74+
filter: impl FnMut(&Metadata) -> bool,
7475
) -> Result<SectionMut<'a, 'event>, section::header::Error> {
7576
self.section_mut_or_create_new_filter_inner(name.as_ref(), subsection_name, filter)
7677
}
@@ -79,7 +80,7 @@ impl<'event> File<'event> {
7980
&'a mut self,
8081
name: &str,
8182
subsection_name: Option<&BStr>,
82-
filter: &mut MetadataFilter,
83+
mut filter: impl FnMut(&Metadata) -> bool,
8384
) -> Result<SectionMut<'a, 'event>, section::header::Error> {
8485
match self
8586
.section_ids_by_name_and_subname(name.as_ref(), subsection_name)
@@ -110,7 +111,7 @@ impl<'event> File<'event> {
110111
&'a mut self,
111112
name: impl AsRef<str>,
112113
subsection_name: Option<&BStr>,
113-
filter: &mut MetadataFilter,
114+
filter: impl FnMut(&Metadata) -> bool,
114115
) -> Result<Option<file::SectionMut<'a, 'event>>, lookup::existing::Error> {
115116
self.section_mut_filter_inner(name.as_ref(), subsection_name, filter)
116117
}
@@ -119,7 +120,7 @@ impl<'event> File<'event> {
119120
&'a mut self,
120121
name: &str,
121122
subsection_name: Option<&BStr>,
122-
filter: &mut MetadataFilter,
123+
mut filter: impl FnMut(&Metadata) -> bool,
123124
) -> Result<Option<file::SectionMut<'a, 'event>>, lookup::existing::Error> {
124125
let id = self
125126
.section_ids_by_name_and_subname(name, subsection_name)?
@@ -137,7 +138,7 @@ impl<'event> File<'event> {
137138
pub fn section_mut_filter_by_key<'a, 'b>(
138139
&'a mut self,
139140
key: impl Into<&'b BStr>,
140-
filter: &mut MetadataFilter,
141+
filter: impl FnMut(&Metadata) -> bool,
141142
) -> Result<Option<file::SectionMut<'a, 'event>>, lookup::existing::Error> {
142143
let key = section::unvalidated::Key::parse(key).ok_or(lookup::existing::Error::KeyMissing)?;
143144
self.section_mut_filter(key.section_name, key.subsection_name, filter)
@@ -289,7 +290,7 @@ impl<'event> File<'event> {
289290
&mut self,
290291
name: impl AsRef<str>,
291292
subsection_name: impl Into<Option<&'a BStr>>,
292-
filter: &mut MetadataFilter,
293+
filter: impl FnMut(&Metadata) -> bool,
293294
) -> Option<file::Section<'event>> {
294295
self.remove_section_filter_inner(name.as_ref(), subsection_name.into(), filter)
295296
}
@@ -298,7 +299,7 @@ impl<'event> File<'event> {
298299
&mut self,
299300
name: &str,
300301
subsection_name: Option<&BStr>,
301-
filter: &mut MetadataFilter,
302+
mut filter: impl FnMut(&Metadata) -> bool,
302303
) -> Option<file::Section<'event>> {
303304
let id = self
304305
.section_ids_by_name_and_subname(name, subsection_name)
@@ -352,7 +353,7 @@ impl<'event> File<'event> {
352353
subsection_name: impl Into<Option<&'a BStr>>,
353354
new_name: impl Into<Cow<'event, str>>,
354355
new_subsection_name: impl Into<Option<Cow<'event, BStr>>>,
355-
filter: &mut MetadataFilter,
356+
mut filter: impl FnMut(&Metadata) -> bool,
356357
) -> Result<(), rename_section::Error> {
357358
let id = self
358359
.section_ids_by_name_and_subname(name.as_ref(), subsection_name.into())?

0 commit comments

Comments
 (0)