1use aion_core::PackageVersion;
4use aion_package::ContentHash;
5
6use crate::error::EngineError;
7
8pub mod catalog;
10pub mod load;
12pub mod persistence;
14pub mod version_info;
16
17pub use catalog::{PinnedWorkflow, WorkflowCatalog};
18pub use load::{LoadOutcome, LoadedWorkflow};
19pub use version_info::WorkflowVersionInfo;
20
21#[must_use]
23pub fn package_version_of(hash: &ContentHash) -> PackageVersion {
24 PackageVersion::new(hash.to_string())
25}
26
27pub fn parse_package_version(
34 workflow_type: &str,
35 version: &PackageVersion,
36) -> Result<ContentHash, EngineError> {
37 version
38 .as_str()
39 .parse::<ContentHash>()
40 .map_err(|error| EngineError::Load {
41 reason: format!(
42 "workflow `{workflow_type}` recorded package version `{version}` that is not a canonical content hash: {error}"
43 ),
44 })
45}