Skip to content

Commit 244f1c9

Browse files
committed
chore: migrate workspace lint cleanup to Rust 2024
Set the workspace and app crate edition to Rust 2024, update rustfmt configuration, and apply the resulting formatting changes across the app and kube crates. Collapse Clippy-reported nested conditionals and remove a redundant let binding so cargo clippy --workspace --all-targets -- -D warnings passes on the current toolchain.
1 parent 8ecdded commit 244f1c9

22 files changed

Lines changed: 145 additions & 138 deletions

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ members = ["crates/aetheris-app", "crates/aetheris-kube"]
44

55
[workspace.package]
66
version = "1.3.0"
7-
edition = "2021"
7+
edition = "2024"
88
license = "GPL-3.0-or-later"
99
authors = ["Leandro Rodrigues <leandromqrs@hotmail.com>"]
1010

crates/aetheris-app/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "aetheris-app"
33
description = "Aetheris native Kubernetes client for GNOME"
44
version = "1.3.0"
5-
edition = "2021"
5+
edition = "2024"
66
license = "GPL-3.0-or-later"
77
authors = ["Leandro Rodrigues <leandromqrs@hotmail.com>"]
88

crates/aetheris-app/src/app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ use aetheris_kube::{
99
ObjectDetail, ObjectEvent, ObjectSummary, ObjectWatchEvent, PodExecEvent, PodExecRequest,
1010
PodLogRequest, PodPortForwardEvent, PodPortForwardRequest, ResourceKind, ResourceUsage,
1111
};
12-
use futures::future::{AbortHandle, Abortable};
1312
use futures::FutureExt;
13+
use futures::future::{AbortHandle, Abortable};
1414
use relm4::adw::prelude::*;
1515
use relm4::prelude::*;
1616
use relm4::{adw, gtk};

crates/aetheris-app/src/app/commands.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,13 @@ pub(super) async fn list_objects_snapshot(
8484
resource: ResourceKind,
8585
namespace: Option<String>,
8686
) -> Result<Vec<ObjectSummary>, String> {
87-
let result = async {
87+
async {
8888
let manager = KubeManager::load()?;
8989
let session = manager.connect_context(&context).await?;
9090
session.list_objects(&resource, namespace.as_deref()).await
9191
}
9292
.await
93-
.map_err(format_error);
94-
95-
result
93+
.map_err(format_error)
9694
}
9795

9896
pub(super) async fn stream_object_watch(

crates/aetheris-app/src/app/handler.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -363,16 +363,16 @@ impl App {
363363
self.show_custom_namespace_dialog(root);
364364
return;
365365
}
366-
if let Some(namespace) = choices.get(index as usize) {
367-
if self.selected_namespace != *namespace {
368-
self.selected_namespace.clone_from(namespace);
369-
self.remember_selected_namespace();
370-
self.sync_dropdowns(Some(sender.clone()));
371-
self.show_object_list();
372-
self.stop_log_stream();
373-
self.stop_port_forward();
374-
self.refresh_objects(sender);
375-
}
366+
if let Some(namespace) = choices.get(index as usize)
367+
&& self.selected_namespace != *namespace
368+
{
369+
self.selected_namespace.clone_from(namespace);
370+
self.remember_selected_namespace();
371+
self.sync_dropdowns(Some(sender.clone()));
372+
self.show_object_list();
373+
self.stop_log_stream();
374+
self.stop_port_forward();
375+
self.refresh_objects(sender);
376376
}
377377
}
378378
AppMsg::CustomNamespaceEntered => {

crates/aetheris-app/src/app/methods.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,11 @@ impl App {
341341
self.namespaces.push(namespace.to_owned());
342342
}
343343

344-
if let Some(context) = self.selected_context.clone() {
345-
if let Some(project) = self.projects.selected_project_mut() {
346-
if project.add_custom_namespace(&context, namespace) {
347-
self.save_projects_or_toast();
348-
}
349-
}
344+
if let Some(context) = self.selected_context.clone()
345+
&& let Some(project) = self.projects.selected_project_mut()
346+
&& project.add_custom_namespace(&context, namespace)
347+
{
348+
self.save_projects_or_toast();
350349
}
351350
}
352351

crates/aetheris-app/src/app/projects.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -860,9 +860,11 @@ mod tests {
860860
project.custom_namespaces_for_context(Some("prod")),
861861
vec![String::from("billing")]
862862
);
863-
assert!(project
864-
.custom_namespaces_for_context(Some("stage"))
865-
.is_empty());
863+
assert!(
864+
project
865+
.custom_namespaces_for_context(Some("stage"))
866+
.is_empty()
867+
);
866868
assert!(!project.has_custom_namespace(Some("stage"), "billing"));
867869
}
868870

@@ -876,9 +878,11 @@ mod tests {
876878
project.add_custom_namespace("prod", "billing");
877879

878880
assert!(project.remove_custom_namespace("prod", "billing"));
879-
assert!(project
880-
.custom_namespaces_for_context(Some("prod"))
881-
.is_empty());
881+
assert!(
882+
project
883+
.custom_namespaces_for_context(Some("prod"))
884+
.is_empty()
885+
);
882886
assert!(project.custom_namespaces_by_context.is_empty());
883887
}
884888

crates/aetheris-app/src/app/style.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ fn app_style_candidates() -> Vec<std::path::PathBuf> {
4747
paths.extend(std::env::split_paths(&data_dirs).map(|path| path.join(APP_STYLE_RESOURCE)));
4848
}
4949

50-
if let Ok(exe) = std::env::current_exe() {
51-
if let Some(bin_dir) = exe.parent() {
52-
paths.push(bin_dir.join("../share").join(APP_STYLE_RESOURCE));
53-
paths.push(bin_dir.join("share").join(APP_STYLE_RESOURCE));
54-
paths.push(bin_dir.join("../style.css"));
55-
}
50+
if let Ok(exe) = std::env::current_exe()
51+
&& let Some(bin_dir) = exe.parent()
52+
{
53+
paths.push(bin_dir.join("../share").join(APP_STYLE_RESOURCE));
54+
paths.push(bin_dir.join("share").join(APP_STYLE_RESOURCE));
55+
paths.push(bin_dir.join("../style.css"));
5656
}
5757

5858
if let Some(app_dir) = std::env::var_os("APPDIR") {

crates/aetheris-app/src/app/utils.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ pub(super) fn terminal_error_message(error: &str) -> String {
4242
|| lower.contains("pods/exec")
4343
|| (lower.contains("cannot create") && lower.contains("exec"))
4444
{
45-
return tr("You do not have permission to open a terminal for this Pod. Your Kubernetes user needs create access to pods/exec in this namespace.");
45+
return tr(
46+
"You do not have permission to open a terminal for this Pod. Your Kubernetes user needs create access to pods/exec in this namespace.",
47+
);
4648
}
4749

4850
tr_format(

crates/aetheris-app/src/app/widgets.rs

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -107,30 +107,28 @@ pub(super) fn namespace_selector_row(
107107
.build();
108108
action.add_prefix(&gtk::Image::from_icon_name("folder-symbolic"));
109109

110-
if is_custom {
111-
if let Some(sender) = sender {
112-
let edit_button = gtk::Button::from_icon_name("document-edit-symbolic");
113-
edit_button.add_css_class("flat");
114-
edit_button.set_valign(gtk::Align::Center);
115-
edit_button.set_tooltip_text(Some(&tr("Rename")));
116-
edit_button.connect_clicked({
117-
let sender = sender.clone();
118-
let namespace = namespace.to_owned();
119-
move |_| sender.input(AppMsg::OpenRenameNamespaceDialog(namespace.clone()))
120-
});
121-
action.add_suffix(&edit_button);
122-
123-
let delete_button = gtk::Button::from_icon_name("user-trash-symbolic");
124-
delete_button.add_css_class("flat");
125-
delete_button.add_css_class("destructive-action");
126-
delete_button.set_valign(gtk::Align::Center);
127-
delete_button.set_tooltip_text(Some(&tr("Remove")));
128-
delete_button.connect_clicked({
129-
let namespace = namespace.to_owned();
130-
move |_| sender.input(AppMsg::RemoveCustomNamespace(namespace.clone()))
131-
});
132-
action.add_suffix(&delete_button);
133-
}
110+
if is_custom && let Some(sender) = sender {
111+
let edit_button = gtk::Button::from_icon_name("document-edit-symbolic");
112+
edit_button.add_css_class("flat");
113+
edit_button.set_valign(gtk::Align::Center);
114+
edit_button.set_tooltip_text(Some(&tr("Rename")));
115+
edit_button.connect_clicked({
116+
let sender = sender.clone();
117+
let namespace = namespace.to_owned();
118+
move |_| sender.input(AppMsg::OpenRenameNamespaceDialog(namespace.clone()))
119+
});
120+
action.add_suffix(&edit_button);
121+
122+
let delete_button = gtk::Button::from_icon_name("user-trash-symbolic");
123+
delete_button.add_css_class("flat");
124+
delete_button.add_css_class("destructive-action");
125+
delete_button.set_valign(gtk::Align::Center);
126+
delete_button.set_tooltip_text(Some(&tr("Remove")));
127+
delete_button.connect_clicked({
128+
let namespace = namespace.to_owned();
129+
move |_| sender.input(AppMsg::RemoveCustomNamespace(namespace.clone()))
130+
});
131+
action.add_suffix(&delete_button);
134132
}
135133

136134
if selected {
@@ -602,8 +600,8 @@ const RELATED_POD_COLUMNS: [ObjectColumn; 3] = [
602600
/// same cell factories as the main object table, default widths, no
603601
/// persistence. Returns the sorted model too — activation positions are
604602
/// indices into it, not into the unsorted store.
605-
pub(super) fn related_pods_column_view(
606-
) -> (gtk::ColumnView, gtk::gio::ListStore, gtk::SortListModel) {
603+
pub(super) fn related_pods_column_view()
604+
-> (gtk::ColumnView, gtk::gio::ListStore, gtk::SortListModel) {
607605
let store = gtk::gio::ListStore::new::<gtk::glib::BoxedAnyObject>();
608606
let view = gtk::ColumnView::builder()
609607
.single_click_activate(true)

0 commit comments

Comments
 (0)