Skip to content

Commit

Permalink
fix: per option element '-' prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
desbma committed Jan 31, 2025
1 parent f74cf59 commit cc6fe8a
Showing 1 changed file with 41 additions and 22 deletions.
63 changes: 41 additions & 22 deletions src/systemd/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ pub(crate) enum OptionValue {
pub(crate) struct ListOptionValue {
pub values: Vec<String>,
pub value_if_empty: Option<&'static str>,
pub prefix: &'static str,
pub option_prefix: &'static str,
pub elem_prefix: &'static str,
pub repeat_option: bool,
pub mode: ListMode,
pub mergeable_paths: bool,
Expand Down Expand Up @@ -287,21 +288,24 @@ impl<T: PartialEq> OptionWithValue<T> {
OptionValue::List(ListOptionValue {
values,
value_if_empty,
prefix,
option_prefix,
elem_prefix,
repeat_option,
mode,
mergeable_paths,
}),
OptionValue::List(ListOptionValue {
values: ovalues,
value_if_empty: ovalue_if_empty,
prefix: oprefix,
option_prefix: ooption_prefix,
elem_prefix: oelem_prefix,
repeat_option: orepeat_option,
mode: omode,
mergeable_paths: omergeable_paths,
}),
) if value_if_empty == ovalue_if_empty
&& prefix == oprefix
&& option_prefix == ooption_prefix
&& elem_prefix == oelem_prefix
&& repeat_option == orepeat_option
&& mode == omode
&& mergeable_paths == omergeable_paths =>
Expand Down Expand Up @@ -344,7 +348,8 @@ impl<T: fmt::Display> fmt::Display for OptionWithValue<T> {
OptionValue::List(ListOptionValue {
values,
value_if_empty,
prefix,
option_prefix,
elem_prefix,
repeat_option,
..
}) => {
Expand All @@ -357,7 +362,7 @@ impl<T: fmt::Display> fmt::Display for OptionWithValue<T> {
}
} else if *repeat_option {
for (i, value) in values.iter().enumerate() {
write!(f, "{}={}{}", self.name, prefix, value)?;
write!(f, "{}={}{}{}", self.name, option_prefix, elem_prefix, value)?;
if i < values.len() - 1 {
writeln!(f)?;
}
Expand All @@ -368,10 +373,10 @@ impl<T: fmt::Display> fmt::Display for OptionWithValue<T> {
f,
"{}={}{}",
self.name,
prefix,
option_prefix,
values
.iter()
.map(ToOwned::to_owned)
.map(|v| format!("{elem_prefix}{v}"))
.collect::<Vec<_>>()
.join(" ")
)
Expand Down Expand Up @@ -1218,7 +1223,8 @@ pub(crate) fn build_options(
value: OptionValue::List(ListOptionValue {
values: vec!["/".to_owned()],
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: true,
Expand Down Expand Up @@ -1261,7 +1267,8 @@ pub(crate) fn build_options(
#[expect(clippy::unwrap_used)] // path is from our option, so unicode safe
values: vec![base.to_str().unwrap().to_owned()],
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: true,
Expand All @@ -1278,7 +1285,8 @@ pub(crate) fn build_options(
.filter_map(|p| p.to_str().map(ToOwned::to_owned))
.collect(),
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::WhiteList,
mergeable_paths: true,
Expand All @@ -1300,7 +1308,8 @@ pub(crate) fn build_options(
value: OptionValue::List(ListOptionValue {
values: vec!["/".to_owned()],
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: true,
Expand Down Expand Up @@ -1343,7 +1352,8 @@ pub(crate) fn build_options(
#[expect(clippy::unwrap_used)] // path is from our option, so unicode safe
values: vec![base.to_str().unwrap().to_owned()], // TODO ro?
value_if_empty: None,
prefix: "",
option_prefix: "",
elem_prefix: "",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: true,
Expand All @@ -1360,7 +1370,8 @@ pub(crate) fn build_options(
.filter_map(|p| p.to_str().map(ToOwned::to_owned))
.collect(),
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::WhiteList,
mergeable_paths: true,
Expand All @@ -1382,7 +1393,8 @@ pub(crate) fn build_options(
value: OptionValue::List(ListOptionValue {
values: vec!["/".to_owned()],
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: true,
Expand Down Expand Up @@ -1414,7 +1426,8 @@ pub(crate) fn build_options(
#[expect(clippy::unwrap_used)] // path is from our option, so unicode safe
values: vec![base.to_str().unwrap().to_owned()],
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: true,
Expand All @@ -1431,7 +1444,8 @@ pub(crate) fn build_options(
.filter_map(|p| p.to_str().map(ToOwned::to_owned))
.collect(),
value_if_empty: None,
prefix: "-",
option_prefix: "",
elem_prefix: "-",
repeat_option: false,
mode: ListMode::WhiteList,
mergeable_paths: true,
Expand Down Expand Up @@ -1511,7 +1525,8 @@ pub(crate) fn build_options(
value: OptionValue::List(ListOptionValue {
values: afs.iter().map(|s| (*s).to_owned()).collect(),
value_if_empty: Some("none"),
prefix: "",
option_prefix: "",
elem_prefix: "",
repeat_option: false,
mode: ListMode::WhiteList,
mergeable_paths: false,
Expand Down Expand Up @@ -1575,7 +1590,8 @@ pub(crate) fn build_options(
.map(|(af, proto)| format!("{af}:{proto}"))
.collect(),
value_if_empty: None,
prefix: "",
option_prefix: "",
elem_prefix: "",
repeat_option: true,
mode: ListMode::BlackList,
mergeable_paths: false,
Expand Down Expand Up @@ -1645,7 +1661,8 @@ pub(crate) fn build_options(
})
.collect(),
value_if_empty: None,
prefix: "",
option_prefix: "",
elem_prefix: "",
repeat_option: true,
mode: ListMode::BlackList,
mergeable_paths: false,
Expand Down Expand Up @@ -1846,7 +1863,8 @@ pub(crate) fn build_options(
value: OptionValue::List(ListOptionValue {
values: cap_effects.iter().map(|(c, _e)| (*c).to_owned()).collect(),
value_if_empty: None,
prefix: "~",
option_prefix: "~",
elem_prefix: "",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: false,
Expand Down Expand Up @@ -1877,7 +1895,8 @@ pub(crate) fn build_options(
.map(|c| format!("@{c}:EPERM"))
.collect(),
value_if_empty: None,
prefix: "~",
option_prefix: "~",
elem_prefix: "",
repeat_option: false,
mode: ListMode::BlackList,
mergeable_paths: false,
Expand Down

0 comments on commit cc6fe8a

Please sign in to comment.