buildkit_rs_reference/lib.rs
1//! A parser for image references.
2//!
3//! Based on the canonical [Docker image reference parser](https://github.com/distribution/distribution/tree/main/reference)
4//!
5//! ## Example
6//!
7//! ```
8//! use buildkit_rs_reference::Reference;
9//!
10//! // Parse a reference with no domain, an incomplete path, and a tag
11//! let image = "alpine:latest";
12//!
13//! let reference = Reference::parse_normalized_named(image).unwrap();
14//! assert_eq!(reference.domain(), "docker.io");
15//! assert_eq!(reference.path().as_deref(), Some("library/alpine"));
16//! assert_eq!(reference.tag(), Some("latest"));
17//!
18//! // Parse a reference with a domain and digest
19//! let image = "b.gcr.io/alpine@sha256:86e0e091d0da6bde2456dbb48306f3956bbeb2eae1b5b9a43045843f69fe4aaa";
20//!
21//! let reference = Reference::parse_normalized_named(image).unwrap();
22//! assert_eq!(reference.domain(), "b.gcr.io");
23//! assert_eq!(reference.path().as_deref(), Some("alpine"));
24//! assert_eq!(reference.digest(), Some("sha256:86e0e091d0da6bde2456dbb48306f3956bbeb2eae1b5b9a43045843f69fe4aaa"));
25//! ```
26
27pub(crate) mod consts;
28pub(crate) mod error;
29pub(crate) mod reference;
30pub(crate) mod regex;
31
32pub use error::Error;
33pub use reference::{Reference, Repository};