1use core::fmt::Display;
7use internationalization::translate;
8
9pub type Result<T> = core::result::Result<T, Error>;
14
15#[derive(Debug, Clone)]
24pub enum Error {
25 FailedToGetCurrentTaskIdentifier(task::Error),
27 FailedToReadUsersDirectory(virtual_file_system::Error),
29 FailedToGetUserFilePath,
31 FailedToOpenUserFile(virtual_file_system::Error),
33 FailedToReadUserFile(virtual_file_system::Error),
35 FailedToParseUserFile(miniserde::Error),
37 FailedToAddUser(users::Error),
39 FailedToGetNewUserIdentifier(users::Error),
41 FailedToCreateUser(users::Error),
43 FailedToWriteUserFile(virtual_file_system::Error),
45 FailedToCreateUsersDirectory(virtual_file_system::Error),
47 FailedToReadGroupDirectory(virtual_file_system::Error),
49 FailedToGetGroupFilePath,
51 FailedToOpenGroupFile(virtual_file_system::Error),
53 FailedToReadGroupFile(virtual_file_system::Error),
55 FailedToParseGroupFile(miniserde::Error),
57 FailedToAddGroup(users::Error),
59 FailedToGetNewGroupIdentifier(users::Error),
61 FailedToCreateGroup(users::Error),
63 FailedToWriteGroupFile(virtual_file_system::Error),
65 FailedToCreateGroupsDirectory(virtual_file_system::Error),
67 InvalidPassword,
69 FailedToOpenRandomDevice(virtual_file_system::Error),
71 FailedToReadRandomDevice(virtual_file_system::Error),
73 FailedToGetUserIdentifier(users::Error),
75 FailedToCloseFile(virtual_file_system::Error),
77 FailedToHashPassword(virtual_file_system::Error),
79}
80
81impl Display for Error {
82 fn fmt(&self, formatter: &mut core::fmt::Formatter) -> core::fmt::Result {
83 match self {
84 Self::FailedToGetCurrentTaskIdentifier(error) => {
85 write!(
86 formatter,
87 translate!("Failed to get current task identifier: {}"),
88 error
89 )
90 }
91 Self::FailedToReadUsersDirectory(error) => {
92 write!(
93 formatter,
94 translate!("Failed to read users directory: {}"),
95 error
96 )
97 }
98 Self::FailedToGetUserFilePath => {
99 write!(formatter, translate!("Failed to get user file path"))
100 }
101 Self::FailedToReadUserFile(error) => {
102 write!(formatter, translate!("Failed to read user file: {}"), error)
103 }
104 Self::FailedToOpenUserFile(error) => {
105 write!(formatter, translate!("Failed to open user file: {}"), error)
106 }
107 Self::FailedToParseUserFile(error) => {
108 write!(
109 formatter,
110 translate!("Failed to parse user file: {}"),
111 error
112 )
113 }
114 Self::FailedToAddUser(error) => {
115 write!(formatter, translate!("Failed to add user: {}"), error)
116 }
117 Self::FailedToCreateUsersDirectory(error) => {
118 write!(
119 formatter,
120 translate!("Failed to create users directory: {}"),
121 error
122 )
123 }
124 Self::FailedToReadGroupDirectory(error) => {
125 write!(
126 formatter,
127 translate!("Failed to read group directory: {}"),
128 error
129 )
130 }
131 Self::FailedToGetGroupFilePath => {
132 write!(formatter, translate!("Failed to get group file path"))
133 }
134 Self::FailedToOpenGroupFile(error) => {
135 write!(
136 formatter,
137 translate!("Failed to open group file: {}"),
138 error
139 )
140 }
141 Self::FailedToReadGroupFile(error) => {
142 write!(
143 formatter,
144 translate!("Failed to read group file: {}"),
145 error
146 )
147 }
148 Self::FailedToParseGroupFile(error) => {
149 write!(
150 formatter,
151 translate!("Failed to parse group file: {}"),
152 error
153 )
154 }
155 Self::FailedToAddGroup(error) => {
156 write!(formatter, translate!("Failed to add group: {}"), error)
157 }
158 Self::FailedToCreateGroupsDirectory(error) => {
159 write!(
160 formatter,
161 translate!("Failed to create group directory: {}"),
162 error
163 )
164 }
165 Self::InvalidPassword => {
166 write!(formatter, translate!("Invalid password"))
167 }
168 Self::FailedToOpenRandomDevice(error) => {
169 write!(
170 formatter,
171 translate!("Failed to open random device: {}"),
172 error
173 )
174 }
175 Self::FailedToReadRandomDevice(error) => {
176 write!(
177 formatter,
178 translate!("Failed to read random device: {}"),
179 error
180 )
181 }
182 Self::FailedToCreateUser(error) => {
183 write!(formatter, translate!("Failed to create user: {}"), error)
184 }
185 Self::FailedToGetNewUserIdentifier(error) => {
186 write!(
187 formatter,
188 translate!("Failed to get new user identifier: {}"),
189 error
190 )
191 }
192 Self::FailedToWriteUserFile(error) => {
193 write!(
194 formatter,
195 translate!("Failed to write user file: {}"),
196 error
197 )
198 }
199 Self::FailedToGetNewGroupIdentifier(error) => {
200 write!(
201 formatter,
202 translate!("Failed to get new groupe identifier: {}"),
203 error
204 )
205 }
206 Self::FailedToCreateGroup(error) => {
207 write!(formatter, translate!("Failed to create group: {}"), error)
208 }
209 Self::FailedToWriteGroupFile(error) => {
210 write!(
211 formatter,
212 translate!("Failed to write group file: {}"),
213 error
214 )
215 }
216 Self::FailedToGetUserIdentifier(error) => {
217 write!(
218 formatter,
219 translate!("Failed to get user identifier: {}"),
220 error
221 )
222 }
223 Self::FailedToCloseFile(error) => {
224 write!(formatter, translate!("Failed to close file: {}"), error)
225 }
226 Self::FailedToHashPassword(error) => {
227 write!(formatter, translate!("Failed to hash password: {}"), error)
228 }
229 }
230 }
231}
232
233impl From<task::Error> for Error {
234 fn from(error: task::Error) -> Self {
235 Self::FailedToGetCurrentTaskIdentifier(error)
236 }
237}