1use http::uri::InvalidUri;
2use label::Label;
3
4pub mod config;
5pub mod digest;
6pub mod label;
7pub mod metadata;
8pub mod package;
9pub mod registry;
10
11#[derive(Debug, thiserror::Error)]
12pub enum Error {
13 #[error("error interacting with cache: {0}")]
14 CacheError(#[source] anyhow::Error),
15 #[error("error reading config file: {0}")]
16 ConfigFileIoError(#[source] std::io::Error),
17 #[error("failed to get registry credentials: {0:#}")]
18 CredentialError(#[source] anyhow::Error),
19 #[error("malformed component: {0:#}")]
20 InvalidComponent(#[source] anyhow::Error),
21 #[error("invalid config: {0}")]
22 InvalidConfig(#[source] anyhow::Error),
23 #[error("invalid content: {0}")]
24 InvalidContent(String),
25 #[error("invalid content digest: {0}")]
26 InvalidContentDigest(String),
27 #[error("invalid package manifest: {0}")]
28 InvalidPackageManifest(String),
29 #[error("invalid package pattern: {0}")]
30 InvalidPackagePattern(String),
31 #[error("invalid label: {0}")]
32 InvalidLabel(#[from] label::InvalidLabel),
33 #[error("invalid package ref: {0}")]
34 InvalidPackageRef(String),
35 #[error("invalid registry: {0}")]
36 InvalidRegistry(#[from] InvalidUri),
37 #[error("invalid registry metadata: {0}")]
38 InvalidRegistryMetadata(#[source] anyhow::Error),
39 #[error("invalid version: {0}")]
40 InvalidVersion(#[from] semver::Error),
41 #[error("IO error: {0}")]
42 IoError(#[from] std::io::Error),
43 #[error("no registry configured for namespace {0:?}")]
44 NoRegistryForNamespace(Label),
45 #[error("Package not found")]
46 PackageNotFound,
47 #[error("registry error: {0}")]
48 RegistryError(#[source] anyhow::Error),
49 #[error("registry metadata error: {0:#}")]
50 RegistryMetadataError(#[source] anyhow::Error),
51 #[error("version not found: {0}")]
52 VersionNotFound(semver::Version),
53}
54
55impl Error {
56 fn invalid_config(err: impl Into<anyhow::Error>) -> Self {
57 Self::InvalidConfig(err.into())
58 }
59}