1use std::path::PathBuf;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5#[error("failed to canonicalize '{path}'")]
6pub struct CanonicalizePathError {
7 pub path: PathBuf,
8 pub source: std::io::Error,
9}
10
11#[derive(Error, Debug)]
12#[error("failed to copy {from} to {to}")]
13pub struct CopyFileError {
14 pub from: PathBuf,
15 pub to: PathBuf,
16 pub source: std::io::Error,
17}
18
19#[derive(Error, Debug)]
20#[error("failed to create directory {path} and parents")]
21pub struct CreateDirAllError {
22 pub path: PathBuf,
23 pub source: std::io::Error,
24}
25
26#[derive(Error, Debug)]
27pub enum EnsureDirExistsError {
28 #[error(transparent)]
29 CreateDirAll(#[from] CreateDirAllError),
30
31 #[error("path {0} is not a directory")]
32 NotADirectory(PathBuf),
33}
34
35#[derive(Error, Debug)]
36pub enum EnsureParentDirExistsError {
37 #[error(transparent)]
38 EnsureDirExists(#[from] EnsureDirExistsError),
39
40 #[error(transparent)]
41 NoParentPath(#[from] NoParentPathError),
42}
43
44#[derive(Error, Debug)]
45#[error("failed to determine parent path for '{0}'")]
46pub struct NoParentPathError(pub PathBuf);
47
48#[derive(Error, Debug)]
49#[error("failed to read directory {path}")]
50pub struct ReadDirError {
51 pub path: PathBuf,
52 pub source: std::io::Error,
53}
54
55#[derive(Error, Debug)]
56#[error("failed to read from {path}")]
57pub struct ReadFileError {
58 pub path: PathBuf,
59 pub source: std::io::Error,
60}
61
62#[derive(Error, Debug)]
63#[error("failed to remove directory {path}")]
64pub struct RemoveDirectoryError {
65 pub path: PathBuf,
66 pub source: std::io::Error,
67}
68
69#[derive(Error, Debug)]
70#[error("failed to write to {path}")]
71pub struct WriteFileError {
72 pub path: PathBuf,
73 pub source: std::io::Error,
74}
75
76#[derive(Error, Debug)]
77#[error("failed to read metadata of {path}")]
78pub struct ReadMetadataError {
79 pub path: PathBuf,
80 pub source: std::io::Error,
81}
82
83#[derive(Error, Debug)]
84#[error("failed to read permissions of {path}")]
85pub struct ReadPermissionsError {
86 pub path: PathBuf,
87 pub source: std::io::Error,
88}
89
90#[derive(Error, Debug)]
91#[error("failed to read {path} as string")]
92pub struct ReadToStringError {
93 pub path: PathBuf,
94 pub source: std::io::Error,
95}
96
97#[derive(Error, Debug)]
98#[error("failed to remove directory {path} and its contents")]
99pub struct RemoveDirectoryAndContentsError {
100 pub path: PathBuf,
101 pub source: std::io::Error,
102}
103
104#[derive(Error, Debug)]
105#[error("failed to remove file {path}")]
106pub struct RemoveFileError {
107 pub path: PathBuf,
108 pub source: std::io::Error,
109}
110
111#[derive(Error, Debug)]
112#[error("Failed to rename {from} to {to}")]
113pub struct RenameError {
114 pub from: PathBuf,
115 pub to: PathBuf,
116 pub source: std::io::Error,
117}
118
119#[derive(Error, Debug)]
120#[error("failed to set permissions of {path}")]
121pub struct SetPermissionsError {
122 pub path: PathBuf,
123 pub source: std::io::Error,
124}
125
126#[derive(Error, Debug)]
127pub enum SetPermissionsReadWriteError {
128 #[error(transparent)]
129 ReadPermissions(#[from] ReadPermissionsError),
130
131 #[error(transparent)]
132 SetPermissions(#[from] SetPermissionsError),
133}
134
135#[derive(Error, Debug)]
136#[error("failed to unpack archive in {path}")]
137pub struct UnpackingArchiveError {
138 pub path: PathBuf,
139 pub source: std::io::Error,
140}