git.delta.rocks / jrsonnet / refs/commits / b59e0084f49a

difftreelog

refactor do not use try_blocks

Lach2025-03-23parent: #3505340.patch.diff
in: trunk

2 files changed

modifiedcmds/fleet/src/cmds/build_systems.rsdiffbeforeafterboth
71 datetime: String,71 datetime: String,
72}72}
73
73async fn get_current_generation(host: &ConfigHost) -> Result<Generation> {74fn parse_generation_line(g: &str) -> Option<Generation> {
74 let mut cmd = host.cmd("nix-env").await?;
75 cmd.comparg("--profile", "/nix/var/nix/profiles/system")
76 .arg("--list-generations");
77 // Sudo is required due to --list-generations acquiring lock on the profile.
78 let data = cmd.sudo().run_string().await?;
79 let generations = data
80 .split('\n')
81 .map(|e| e.trim())
82 .filter(|&l| !l.is_empty())
83 .filter_map(|g| {
84 let gen: Option<Generation> = try {
85 let mut parts = g.split_whitespace();75 let mut parts = g.split_whitespace();
86 let id = parts.next()?;76 let id = parts.next()?;
87 let id: u32 = id.parse().ok()?;77 let id: u32 = id.parse().ok()?;
100 if parts.next().is_some() {90 if parts.next().is_some() {
101 warn!("unexpected text after generation: {g}");91 warn!("unexpected text after generation: {g}");
102 }92 }
103 Generation {93 Some(Generation {
104 id,94 id,
105 current,95 current,
106 datetime: format!("{date} {time}"),96 datetime: format!("{date} {time}"),
107 }97 })
108 };98}
109 if gen.is_none() {99
110 warn!("bad generation: {g}")100async fn get_current_generation(host: &ConfigHost) -> Result<Generation> {
111 }101 let mut cmd = host.cmd("nix-env").await?;
112 gen102 cmd.comparg("--profile", "/nix/var/nix/profiles/system")
113 })103 .arg("--list-generations");
114 .collect::<Vec<_>>();104 // Sudo is required due to --list-generations acquiring lock on the profile.
115 let current = generations105 let data = cmd.sudo().run_string().await?;
116 .into_iter()106 let generations = data
117 .filter(|g| g.current)107 .split('\n')
118 .at_most_one()108 .map(|e| e.trim())
119 .map_err(|_e| anyhow!("bad list-generations output"))?109 .filter(|&l| !l.is_empty())
120 .ok_or_else(|| anyhow!("failed to find generation"))?;110 .filter_map(|g| {
121 Ok(current)111 let gen = parse_generation_line(g);
122}112 if gen.is_none() {
113 warn!("bad generation: {g}");
114 }
115 gen
116 })
117 .collect::<Vec<_>>();
118 let current = generations
119 .into_iter()
120 .filter(|g| g.current)
121 .at_most_one()
122 .map_err(|_e| anyhow!("bad list-generations output"))?
123 .ok_or_else(|| anyhow!("failed to find generation"))?;
124 Ok(current)
125}
123126
124async fn deploy_task(127async fn deploy_task(
125 action: DeployAction,128 action: DeployAction,
modifiedcmds/fleet/src/main.rsdiffbeforeafterboth
1#![recursion_limit = "512"]1#![recursion_limit = "512"]
2#![feature(try_blocks)]
32
4pub(crate) mod cmds;3pub(crate) mod cmds;
5// pub(crate) mod command;4// pub(crate) mod command;