mirror of
https://github.com/orhun/systeroid
synced 2024-10-01 13:13:32 +00:00
feat(cli): support explaining multiple parameters
This commit is contained in:
parent
ace15e10e8
commit
8bd45ee41b
|
@ -385,10 +385,16 @@ systeroid -E user.max_user_namespaces --docs /usr/share/doc/linux
|
|||
|
||||
To change the default pager (`less(1)`), you can use the `PAGER` environment variable. Also, you can simply use `--no-pager` flag to disable it.
|
||||
|
||||
```
|
||||
```sh
|
||||
systeroid -E kernel.ctrl-alt-del --no-pager
|
||||
```
|
||||
|
||||
It is also possible to retrieve information about multiple parameters:
|
||||
|
||||
```sh
|
||||
systeroid -E --pattern '.*ipv4.*' --no-pager
|
||||
```
|
||||
|
||||
## TUI
|
||||
|
||||
### Usage
|
||||
|
|
|
@ -170,7 +170,7 @@ impl Parameter {
|
|||
if let Some(documentation) = self.get_documentation() {
|
||||
writeln!(output, "{}\n", documentation)?;
|
||||
} else {
|
||||
writeln!(output, "No documentation available")?;
|
||||
writeln!(output, "No documentation available for {}", self.name)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -267,7 +267,7 @@ mod tests {
|
|||
let mut output = Vec::new();
|
||||
parameter.display_documentation(&mut output)?;
|
||||
assert_eq!(
|
||||
"No documentation available\n",
|
||||
format!("No documentation available for {}\n", parameter.name),
|
||||
String::from_utf8_lossy(&output)
|
||||
);
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ impl<'a, Output: Write> App<'a, Output> {
|
|||
&mut self,
|
||||
pattern: Option<Regex>,
|
||||
display_deprecated: bool,
|
||||
explain: bool,
|
||||
) -> Result<()> {
|
||||
let parameters = self.sysctl.parameters.clone();
|
||||
let mut parameters = parameters.iter().filter(|parameter| {
|
||||
|
@ -81,7 +82,11 @@ impl<'a, Output: Write> App<'a, Output> {
|
|||
}
|
||||
true
|
||||
});
|
||||
self.print_parameters(&mut parameters)
|
||||
if explain {
|
||||
parameters.try_for_each(|parameter| self.display_documentation(¶meter.name))
|
||||
} else {
|
||||
self.print_parameters(&mut parameters)
|
||||
}
|
||||
}
|
||||
|
||||
/// Displays the documentation of a parameter.
|
||||
|
@ -242,14 +247,14 @@ mod tests {
|
|||
|
||||
let mut app = App::new(&mut sysctl, &mut output, OutputType::Default);
|
||||
|
||||
app.display_parameters(Regex::new("kernel|vm").ok(), false)?;
|
||||
app.display_parameters(Regex::new("kernel|vm").ok(), false, false)?;
|
||||
let result = String::from_utf8_lossy(app.output);
|
||||
assert!(result.contains("vm.zone_reclaim_mode ="));
|
||||
assert!(result.contains("kernel.version ="));
|
||||
app.output.clear();
|
||||
|
||||
app.output_type = OutputType::Tree;
|
||||
app.display_parameters(None, true)?;
|
||||
app.display_parameters(None, true, false)?;
|
||||
assert!(String::from_utf8_lossy(app.output).contains("─ osrelease ="));
|
||||
app.output.clear();
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ pub fn run<Output: Write>(args: Args, output: &mut Output) -> Result<()> {
|
|||
if args.preload_system_files {
|
||||
app.preload_from_system()?;
|
||||
} else if args.values.is_empty() {
|
||||
app.display_parameters(args.pattern, args.display_deprecated)?;
|
||||
app.display_parameters(args.pattern, args.display_deprecated, args.explain)?;
|
||||
} else if args.explain {
|
||||
for param in args.values {
|
||||
app.display_documentation(¶m)?;
|
||||
|
|
Loading…
Reference in a new issue