Skip to main content

chaste_yarn/
error.rs

1// SPDX-FileCopyrightText: 2024 The Chaste Authors
2// SPDX-License-Identifier: Apache-2.0 OR BSD-2-Clause
3
4use std::{io, path, str};
5
6use thiserror::Error;
7
8#[derive(Debug, Error)]
9#[non_exhaustive]
10pub enum Error {
11    #[error("Dependency {0:?} not found")]
12    DependencyNotFound(String),
13
14    #[error("Unknown yarn.lock version: {0:?}")]
15    UnknownLockfileVersion(u8),
16
17    #[error(".yarn-state.yml package {0:?} not found")]
18    StatePackageNotFound(String),
19
20    #[error("Invalid resolution key: {0:?}")]
21    InvalidResolution(String),
22
23    #[error("Couldn't recognize the resolution to follow to replace {0:?}")]
24    AmbiguousResolution(String),
25
26    #[error("Invalid resolved: {0:?}")]
27    InvalidResolved(String),
28
29    #[error("Ambiguous resolved: {0:?}")]
30    AmbiguousResolved(String),
31
32    #[error("Conflicting descriptors: {0:?} and {1:?}")]
33    ConflictingDescriptors(String, String),
34
35    #[error("Chaste error: {0:?}")]
36    ChasteError(#[from] chaste_types::Error),
37
38    #[error("I/O error: {0:?}")]
39    IoError(#[from] io::Error),
40
41    #[error("I/O error trying to read {1:?}: {0:?}")]
42    IoInWorkspace(io::Error, path::PathBuf),
43
44    #[error("UTF-8 parsing error: {0:?}")]
45    Utf8Error(#[from] str::Utf8Error),
46
47    #[error("Yarn parser error: {0:?}")]
48    YarnParserError(#[from] yarn_lock_parser::YarnLockError),
49
50    #[error("Glob error: {0:?}")]
51    #[cfg(feature = "classic")]
52    GlobreeksError(#[from] globreeks::Error),
53
54    #[error("Walkdir error: {0:?}")]
55    #[cfg(feature = "classic")]
56    WalkdirError(#[from] walkdir::Error),
57
58    #[error("Yarn state parser error: {0:?}")]
59    #[cfg(feature = "berry")]
60    YarnStateError(#[from] yarn_state::error::Error),
61
62    #[error("SSRI error: {0:?}")]
63    SSRIError(#[from] chaste_types::SSRIError),
64
65    #[error("JSON parsing error: {0:?}")]
66    SerdeJsonError(#[from] serde_json::Error),
67}
68
69pub type Result<T, E = Error> = std::result::Result<T, E>;