1use std::{fmt::Debug, num::TryFromIntError};
4
5use alpm_types::CompressionAlgorithmFileExtension;
6use fluent_i18n::t;
7
8use crate::compression::CompressionSettings;
9
10#[derive(Debug, thiserror::Error)]
12pub enum Error {
13 #[error("{msg}", msg = t!("error-create-zstd-encoder", {
15 "context" => context,
16 "compression_settings" => format!("{compression_settings:?}"),
17 "source" => source.to_string()
18 }))]
19 CreateZstandardEncoder {
20 context: String,
25 compression_settings: CompressionSettings,
27 source: std::io::Error,
29 },
30
31 #[error("{msg}", msg = t!("error-create-zstd-decoder", { "source" => .0.to_string() }))]
33 CreateZstandardDecoder(#[source] std::io::Error),
34
35 #[error("{msg}", msg = t!("error-finish-encoder", {
37 "compression_type" => compression_type.to_string(),
38 "source" => source.to_string()
39 }))]
40 FinishEncoder {
41 compression_type: CompressionAlgorithmFileExtension,
43 source: std::io::Error,
45 },
46
47 #[error("{msg}", msg = t!("error-get-parallelism", { "source" => .0.to_string() }))]
49 GetParallelism(#[source] std::io::Error),
50
51 #[error("{msg}", msg = t!("error-integer-conversion", { "source" => .0.to_string() }))]
53 IntegerConversion(#[source] TryFromIntError),
54
55 #[error("{msg}", msg = t!("error-io-read", {
57 "context" => context,
58 "source" => source.to_string()
59 }))]
60 IoRead {
61 context: String,
65 source: std::io::Error,
67 },
68
69 #[error("{msg}", msg = t!("error-io-write", {
71 "context" => context,
72 "source" => source.to_string()
73 }))]
74 IoWrite {
75 context: String,
79 source: std::io::Error,
81 },
82
83 #[error("{msg}", msg = t!("error-invalid-compression-level", {
85 "level" => level.to_string(),
86 "min" => min.to_string(),
87 "max" => max.to_string()
88 }))]
89 InvalidCompressionLevel {
90 level: u8,
92 min: u8,
94 max: u8,
96 },
97
98 #[error("{msg}", msg = t!("error-unknown-compression-extension", { "source" => .0.to_string() }))]
100 UnknownCompressionAlgorithmFileExtension(#[source] alpm_types::Error),
101
102 #[error("{msg}", msg = t!("error-unsupported-compression", { "value" => value }))]
104 UnsupportedCompressionAlgorithm {
105 value: String,
107 },
108}