1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Pure, I/O-free workflow logic for Quilt packages.
//!
//! This module owns the workflow **domain**, with no dependency on `aws-sdk`,
//! `tokio`, or the `Remote` trait, so it can be lifted into a standalone
//! `quilt-workflow` crate (it is written to compile to `wasm32` for live
//! client-side validation in the UI). It has three parts:
//!
//! - the **gate** ([`validate_package`], [`validate_candidate_fields`]) — given
//! a workflow's rules and a candidate package, decide whether the package is
//! admissible;
//! - the **config model** ([`WorkflowsConfig`]) — a typed, schema-validated view
//! of `.quilt/workflows/config.yml`, plus [`WorkflowIntent`] and the
//! display-facing [`WorkflowInfo`] / [`WorkflowSchemaUris`];
//! - the **header stamp** ([`Workflow`], [`WorkflowId`]) — the workflow reference
//! recorded in a manifest header.
//!
//! Fetching config and schema documents from a remote, and version-resolving
//! schema URLs, live in `crate::io::remote`; this module only consumes
//! already-fetched documents.
pub use WORKFLOWS_CONFIG_KEY;
pub use WorkflowInfo;
pub use WorkflowIntent;
pub use WorkflowSchemaUris;
pub use WorkflowsConfig;
pub use ConfigError;
pub use RuleViolation;
pub use SchemaKind;
pub use Violations;
pub use WorkflowValidationError;
pub use Workflow;
pub use WorkflowId;
pub use EntryView;
pub use PackageCandidate;
pub use WorkflowRules;
pub use validate_candidate_fields;
pub use validate_package;