diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 182643b231..1d3276db22 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -269,6 +269,7 @@ dependencies = [ "agama-locale-data", "async-trait", "cidr", + "fs-err", "gettext-rs", "macaddr", "regex", @@ -1672,6 +1673,15 @@ dependencies = [ "num", ] +[[package]] +name = "fs-err" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d91fd049c123429b018c47887d3f75a265540dd3c30ba9cb7bae9197edb03a" +dependencies = [ + "autocfg", +] + [[package]] name = "fs_extra" version = "1.3.0" diff --git a/rust/agama-lib/src/error.rs b/rust/agama-lib/src/error.rs index 35732abe6a..bca62c042e 100644 --- a/rust/agama-lib/src/error.rs +++ b/rust/agama-lib/src/error.rs @@ -73,7 +73,7 @@ pub enum ProfileError { Unreachable(#[from] TransferError), #[error("Jsonnet evaluation failed:\n{0}")] EvaluationError(String), - #[error("I/O error")] + #[error("I/O error: {0}")] InputOutputError(#[from] io::Error), #[error("The profile is not a well-formed JSON file")] FormatError(#[from] serde_json::Error), diff --git a/rust/agama-utils/Cargo.toml b/rust/agama-utils/Cargo.toml index ff75fb9350..afac60a4a1 100644 --- a/rust/agama-utils/Cargo.toml +++ b/rust/agama-utils/Cargo.toml @@ -24,6 +24,7 @@ serde_yaml = "0.9.34" uuid = { version = "1.10.0", features = ["v4"] } cidr = { version = "0.3.1", features = ["serde"] } macaddr = { version = "1.0.1", features = ["serde_std"] } +fs-err = "3.2.0" [dev-dependencies] test-context = "0.4.1" diff --git a/rust/agama-utils/src/licenses.rs b/rust/agama-utils/src/licenses.rs index 4335c59d9c..d5e2206a4d 100644 --- a/rust/agama-utils/src/licenses.rs +++ b/rust/agama-utils/src/licenses.rs @@ -22,9 +22,9 @@ use crate::api::manager::{InvalidLanguageCode, LanguageTag, License, LicenseContent}; use agama_locale_data::get_territories; +use fs_err::read_dir; use std::{ collections::HashMap, - fs::read_dir, path::{Path, PathBuf}, }; use thiserror::Error; @@ -33,7 +33,7 @@ use thiserror::Error; pub enum Error { #[error("Not a valid language code: {0}")] InvalidLanguageCode(#[from] InvalidLanguageCode), - #[error("I/O error")] + #[error("I/O error: {0}")] IO(#[from] std::io::Error), } @@ -117,7 +117,7 @@ impl Registry { /// /// * `path`: directory to search translations. fn find_translations(path: &PathBuf) -> Result, std::io::Error> { - let entries = read_dir(path).unwrap().filter_map(|entry| entry.ok()); + let entries = read_dir(path)?.filter_map(|entry| entry.ok()); let files = entries .filter(|entry| entry.file_type().is_ok_and(|f| f.is_file())) diff --git a/rust/install.sh b/rust/install.sh index 2e5cb4e9d8..168a1c4e0b 100755 --- a/rust/install.sh +++ b/rust/install.sh @@ -52,6 +52,9 @@ install6 -D -t "${DESTDIR}${unitdir}" "${SRCDIR}"/share/agama-autoinstall.servic install6 -D -t "${DESTDIR}${unitdir}" "${SRCDIR}"/share/agama-scripts.service install6 -D -t "${DESTDIR}${unitdir}" "${SRCDIR}"/share/agama-web-server.service +# instal licenses +install6 -D -t "${DESTDIR}${datadir}"/agama/eula/license.final "${SRCDIR}"/share/eula/license.final/* + # install manpages install6 -D -t "${DESTDIR}${mandir}"/man1 "${SRCDIR}"/out/man/*