pub enum ReleaseManifestError {
UnknownFormatVersion {
found: u32,
supported: u32,
version: String,
},
VersionMismatch {
expected: String,
found: String,
},
MalformedImage {
name: String,
image: String,
},
MalformedDigest {
name: String,
digest: String,
},
MissingComponent(String),
AssetMissing(String),
Yaml(Error),
Http(Error),
Ghcr(GhcrError),
}Expand description
A release-manifest fetch, parse, or validation failure.
Variants§
UnknownFormatVersion
The manifest’s format_version is not one this binary understands.
Refuse rather than degrade — see the module-level “Format versioning”
section.
Fields
supported: u32The only format_version this binary reads (FORMAT_VERSION).
VersionMismatch
The manifest’s version field does not match the release it was
fetched for — it was published for a different release than requested
(or was tampered with).
Fields
MalformedImage
An entry’s image field is not exactly
ghcr.io/officialunofficial/<lowercase-name> — could be a typo, a
different registry/owner entirely, or an uppercase/invalid component
name.
Fields
MalformedDigest
An entry’s digest field is not a sha256:<64 lowercase hex> content
address.
Fields
MissingComponent(String)
resolve_release_digests needed a component’s digest from the
manifest, but the manifest carries no entry for it.
AssetMissing(String)
The release exists but carries no release-images.yaml asset — it
predates the digest-manifest channel (#115). Not a fallback case: a
default-GHCR-ref component has nowhere else to resolve its digest from.
Yaml(Error)
The manifest bytes are not valid YAML, or don’t match the expected shape.
Http(Error)
The GitHub Releases API request (or the asset download) failed in transport, or returned a non-success status.
Ghcr(GhcrError)
A component’s live-registry resolve failed (the
POLYCHROME_UPGRADE_IMAGE_*-overridden path, e.g. Google Artifact
Registry in production).
Trait Implementations§
Source§impl Debug for ReleaseManifestError
impl Debug for ReleaseManifestError
Source§impl Display for ReleaseManifestError
impl Display for ReleaseManifestError
Source§impl Error for ReleaseManifestError
impl Error for ReleaseManifestError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<Error> for ReleaseManifestError
impl From<Error> for ReleaseManifestError
Source§impl From<Error> for ReleaseManifestError
impl From<Error> for ReleaseManifestError
Auto Trait Implementations§
impl !RefUnwindSafe for ReleaseManifestError
impl !UnwindSafe for ReleaseManifestError
impl Freeze for ReleaseManifestError
impl Send for ReleaseManifestError
impl Sync for ReleaseManifestError
impl Unpin for ReleaseManifestError
impl UnsafeUnpin for ReleaseManifestError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request