Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adapt the code to Clippy suggestions #962

Merged
merged 4 commits into from
Dec 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/ci-rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ jobs:
- name: Install Rust toolchains
run: rustup toolchain install stable

- name: Run clippy linter
run: cargo clippy

- name: Run rustfmt
run: cargo fmt --all -- --check

- name: Install cargo-binstall
uses: taiki-e/install-action@v2
with:
Expand All @@ -89,9 +95,6 @@ jobs:
- name: Run the tests
run: cargo tarpaulin --out xml

- name: Lint formatting
run: cargo fmt --all -- --check

# send the code coverage for the Rust part to the coveralls.io
- name: Coveralls GitHub Action
uses: coverallsapp/github-action@v2
Expand Down
7 changes: 2 additions & 5 deletions rust/agama-cli/src/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ impl LogItem for LogCmd {

/// Collect existing / requested paths which should already exist in the system.
/// Turns them into list of log sources
fn paths_to_log_sources(paths: &Vec<String>, tmp_dir: &TempDir) -> Vec<Box<dyn LogItem>> {
fn paths_to_log_sources(paths: &[String], tmp_dir: &TempDir) -> Vec<Box<dyn LogItem>> {
let mut log_sources: Vec<Box<dyn LogItem>> = Vec::new();

for path in paths.iter() {
Expand All @@ -293,10 +293,7 @@ fn paths_to_log_sources(paths: &Vec<String>, tmp_dir: &TempDir) -> Vec<Box<dyn L
}

/// Some info can be collected via particular commands only, turn it into log sources
fn cmds_to_log_sources(
commands: &Vec<(String, String)>,
tmp_dir: &TempDir,
) -> Vec<Box<dyn LogItem>> {
fn cmds_to_log_sources(commands: &[(String, String)], tmp_dir: &TempDir) -> Vec<Box<dyn LogItem>> {
let mut log_sources: Vec<Box<dyn LogItem>> = Vec::new();

for cmd in commands.iter() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,7 @@ mod tests {
fn test_read_timezone_without_country() {
let mut db = TimezonesDatabase::new();
db.read("es").unwrap();
let timezone = db
.entries()
.into_iter()
.find(|tz| tz.code == "UTC")
.unwrap();
let timezone = db.entries().iter().find(|tz| tz.code == "UTC").unwrap();
assert_eq!(timezone.country, None);
}

Expand All @@ -145,7 +141,7 @@ mod tests {
db.read("en").unwrap();
let timezone = db
.entries()
.into_iter()
.iter()
.find(|tz| tz.code == "Europe/Kiev")
.unwrap();
assert_eq!(timezone.country, Some("Ukraine".to_string()));
Expand Down
2 changes: 1 addition & 1 deletion rust/agama-dbus-server/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub mod error;
pub mod locale;
pub mod l10n;
pub mod network;
pub mod questions;
7 changes: 5 additions & 2 deletions rust/agama-dbus-server/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
use agama_dbus_server::{locale, locale::helpers, network, questions};
use agama_dbus_server::{
l10n::{self, helpers},
network, questions,
};

use agama_lib::connection_to;
use anyhow::Context;
Expand Down Expand Up @@ -36,7 +39,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
// When adding more services here, the order might be important.
questions::export_dbus_objects(&connection).await?;
log::info!("Started questions interface");
locale::export_dbus_objects(&connection, &locale).await?;
l10n::export_dbus_objects(&connection, &locale).await?;
log::info!("Started locale interface");
network::export_dbus_objects(&connection).await?;
log::info!("Started network interface");
Expand Down
1 change: 0 additions & 1 deletion rust/agama-dbus-server/src/network/dbus/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ impl NetworkService {
connection: &Connection,
adapter: T,
) -> Result<(), Box<dyn Error>> {
let connection = connection.clone();
let mut network = NetworkSystem::new(connection.clone(), adapter);

tokio::spawn(async move {
Expand Down
5 changes: 1 addition & 4 deletions rust/agama-dbus-server/src/network/nm/dbus.rs
Original file line number Diff line number Diff line change
Expand Up @@ -781,10 +781,7 @@ mod test {
)]));

let dbus_conn = HashMap::from([
(
"connection".to_string(),
connection_section.try_into().unwrap(),
),
("connection".to_string(), connection_section),
(BOND_KEY.to_string(), bond_options.try_into().unwrap()),
]);

Expand Down
12 changes: 2 additions & 10 deletions rust/agama-dbus-server/src/network/nm/proxies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
//! …consequently `zbus-xmlgen` did not generate code for the above interfaces.
//! Also some proxies can be used against multiple services when they share interface.

use agama_lib::dbus::OwnedNestedHash;
use zbus::dbus_proxy;

#[dbus_proxy(
Expand Down Expand Up @@ -267,16 +268,7 @@ trait Device {
fn disconnect(&self) -> zbus::Result<()>;

/// GetAppliedConnection method
fn get_applied_connection(
&self,
flags: u32,
) -> zbus::Result<(
std::collections::HashMap<
String,
std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
>,
u64,
)>;
fn get_applied_connection(&self, flags: u32) -> zbus::Result<(OwnedNestedHash, u64)>;

/// Reapply method
fn reapply(
Expand Down
2 changes: 1 addition & 1 deletion rust/agama-dbus-server/tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ impl NameOwnerChangedStream {
loop {
let signal = self.0.next().await.unwrap().unwrap();
let (sname, _, _): (String, String, String) = signal.body().unwrap();
if &sname == name {
if sname == name {
return;
}
}
Expand Down
4 changes: 2 additions & 2 deletions rust/agama-dbus-server/tests/network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ async fn test_add_bond_connection() -> Result<(), Box<dyn Error>> {

let adapter = NetworkTestAdapter(NetworkState::default());

let _service = NetworkService::start(&server.connection(), adapter).await?;
NetworkService::start(&server.connection(), adapter).await?;
server.request_name().await?;

let client = NetworkClient::new(server.connection().clone()).await?;
Expand All @@ -128,7 +128,7 @@ async fn test_add_bond_connection() -> Result<(), Box<dyn Error>> {
let conns = async_retry(|| client.connections()).await?;
assert_eq!(conns.len(), 2);

let conn = conns.iter().find(|c| c.id == "bond0".to_string()).unwrap();
let conn = conns.iter().find(|c| &c.id == "bond0").unwrap();
assert_eq!(conn.id, "bond0");
assert_eq!(conn.device_type(), DeviceType::Bond);
let bond = conn.bond.clone().unwrap();
Expand Down
39 changes: 26 additions & 13 deletions rust/agama-lib/src/software/proxies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
//! This code was generated by `zbus-xmlgen` `3.1.1` from DBus introspection data.
use zbus::dbus_proxy;

/// Software patterns map.
///
/// It uses the pattern name as key and a tuple containing the following information as value:
///
/// * Category.
/// * Description.
/// * Icon.
/// * Summary.
/// * Order.
pub type PatternsMap = std::collections::HashMap<String, (String, String, String, String, String)>;

#[dbus_proxy(
interface = "org.opensuse.Agama.Software1",
default_service = "org.opensuse.Agama.Software1",
Expand All @@ -22,10 +33,7 @@ trait Software1 {
fn is_package_installed(&self, name: &str) -> zbus::Result<bool>;

/// ListPatterns method
fn list_patterns(
&self,
filtered: bool,
) -> zbus::Result<std::collections::HashMap<String, (String, String, String, String, String)>>;
fn list_patterns(&self, filtered: bool) -> zbus::Result<PatternsMap>;

/// Probe method
fn probe(&self) -> zbus::Result<()>;
Expand All @@ -50,6 +58,19 @@ trait Software1 {
fn selected_patterns(&self) -> zbus::Result<std::collections::HashMap<String, u8>>;
}

/// Product definition.
///
/// It is composed of the following elements:
///
/// * Product ID.
/// * Display name.
/// * Some additional data which includes a "description" key.
pub type Product = (
String,
String,
std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
);

#[dbus_proxy(
interface = "org.opensuse.Agama.Software1.Product",
default_service = "org.opensuse.Agama.Software1",
Expand All @@ -61,15 +82,7 @@ trait SoftwareProduct {

/// AvailableProducts property
#[dbus_proxy(property)]
fn available_products(
&self,
) -> zbus::Result<
Vec<(
String,
String,
std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
)>,
>;
fn available_products(&self) -> zbus::Result<Vec<Product>>;

/// SelectedProduct property
#[dbus_proxy(property)]
Expand Down
2 changes: 0 additions & 2 deletions rust/agama-lib/src/storage/store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

use super::{StorageClient, StorageSettings};
use crate::error::ServiceError;
use std::default::Default;
use zbus::Connection;

/// Loads and stores the storage settings from/to the D-Bus service.
Expand All @@ -26,7 +25,6 @@ impl<'a> StorageStore<'a> {
boot_device,
lvm,
encryption_password,
..Default::default()
})
}

Expand Down
12 changes: 2 additions & 10 deletions rust/agama-lib/src/users/client.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Implements a client to access Agama's users service.

use super::proxies::Users1Proxy;
use super::proxies::{FirstUser as FirstUserFromDBus, Users1Proxy};
use crate::error::ServiceError;
use agama_settings::{settings::Settings, SettingValue, SettingsError};
use serde::Serialize;
Expand All @@ -22,15 +22,7 @@ pub struct FirstUser {
}

impl FirstUser {
pub fn from_dbus(
dbus_data: zbus::Result<(
String,
String,
String,
bool,
std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
)>,
) -> zbus::Result<Self> {
pub fn from_dbus(dbus_data: zbus::Result<FirstUserFromDBus>) -> zbus::Result<Self> {
let data = dbus_data?;
Ok(Self {
full_name: data.0,
Expand Down
27 changes: 18 additions & 9 deletions rust/agama-lib/src/users/proxies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,23 @@
//! This code was generated by `zbus-xmlgen` `3.1.0` from DBus introspection data.`.
use zbus::dbus_proxy;

/// First user as it comes from D-Bus.
///
/// It is composed of:
///
/// * full name
/// * user name
/// * password
/// * auto-login (enabled or not)
/// * some optional and additional data
pub type FirstUser = (
String,
String,
String,
bool,
std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
);

#[dbus_proxy(
interface = "org.opensuse.Agama.Users1",
default_service = "org.opensuse.Agama.Manager1",
Expand Down Expand Up @@ -37,15 +54,7 @@ trait Users1 {

/// FirstUser property
#[dbus_proxy(property)]
fn first_user(
&self,
) -> zbus::Result<(
String,
String,
String,
bool,
std::collections::HashMap<String, zbus::zvariant::OwnedValue>,
)>;
fn first_user(&self) -> zbus::Result<FirstUser>;

/// RootPasswordSet property
#[dbus_proxy(property)]
Expand Down
4 changes: 2 additions & 2 deletions rust/agama-locale-data/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,9 @@ mod tests {
let first = result.first().expect("no keyboards");
assert_eq!(first, "Africa/Abidjan");
// test that we filter out deprecates Asmera ( there is already recent Asmara)
let asmera = result.iter().find(|&t| *t == "Africa/Asmera".to_string());
let asmera = result.iter().find(|&t| t == "Africa/Asmera");
assert_eq!(asmera, None);
let asmara = result.iter().find(|&t| *t == "Africa/Asmara".to_string());
let asmara = result.iter().find(|&t| t == "Africa/Asmara");
assert_eq!(asmara, Some(&"Africa/Asmara".to_string()));
// here test that timezones from timezones matches ones in langtable ( as timezones can contain deprecated ones)
// so this test catch if there is new zone that is not translated or if a zone is become deprecated
Expand Down