difftreelog
refactor do not use try_blocks
in: trunk
2 files changed
cmds/fleet/src/cmds/build_systems.rsdiffbeforeafterboth--- a/cmds/fleet/src/cmds/build_systems.rs
+++ b/cmds/fleet/src/cmds/build_systems.rs
@@ -70,6 +70,33 @@
current: bool,
datetime: String,
}
+
+fn parse_generation_line(g: &str) -> Option<Generation> {
+ let mut parts = g.split_whitespace();
+ let id = parts.next()?;
+ let id: u32 = id.parse().ok()?;
+ let date = parts.next()?;
+ let time = parts.next()?;
+ let current = if let Some(current) = parts.next() {
+ if current == "(current)" {
+ Some(true)
+ } else {
+ None
+ }
+ } else {
+ Some(false)
+ };
+ let current = current?;
+ if parts.next().is_some() {
+ warn!("unexpected text after generation: {g}");
+ }
+ Some(Generation {
+ id,
+ current,
+ datetime: format!("{date} {time}"),
+ })
+}
+
async fn get_current_generation(host: &ConfigHost) -> Result<Generation> {
let mut cmd = host.cmd("nix-env").await?;
cmd.comparg("--profile", "/nix/var/nix/profiles/system")
@@ -81,33 +108,9 @@
.map(|e| e.trim())
.filter(|&l| !l.is_empty())
.filter_map(|g| {
- let gen: Option<Generation> = try {
- let mut parts = g.split_whitespace();
- let id = parts.next()?;
- let id: u32 = id.parse().ok()?;
- let date = parts.next()?;
- let time = parts.next()?;
- let current = if let Some(current) = parts.next() {
- if current == "(current)" {
- Some(true)
- } else {
- None
- }
- } else {
- Some(false)
- };
- let current = current?;
- if parts.next().is_some() {
- warn!("unexpected text after generation: {g}");
- }
- Generation {
- id,
- current,
- datetime: format!("{date} {time}"),
- }
- };
+ let gen = parse_generation_line(g);
if gen.is_none() {
- warn!("bad generation: {g}")
+ warn!("bad generation: {g}");
}
gen
})
cmds/fleet/src/main.rsdiffbeforeafterboth1#![recursion_limit = "512"]1#![recursion_limit = "512"]2#![feature(try_blocks)]324pub(crate) mod cmds;3pub(crate) mod cmds;5// pub(crate) mod command;4// pub(crate) mod command;