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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! Orchestration engine that schedules and runs beams.
//!
//! `alba-engine` sits between the model and the machine: it takes the
//! validated [`alba_core::Project`] the loader produced, extracts the union
//! of the target beams' execution subgraphs, and runs it with bounded
//! parallelism through an [`alba_executors::Executor`] — which it only ever
//! sees as that trait, so a future docker or plugin executor drops in
//! without this crate changing. See the `scheduler` module for the
//! scheduling rules themselves.
//!
//! Everything a caller needs is [`run`]: give it a project, [`Targets`],
//! [`RunOptions`], the [`Executors`] to dispatch each beam's declared kind
//! to, a channel to receive [`RunEvent`]s on, and a cancellation token, and
//! it reports back a [`RunSummary`]. [`watch`] wraps that same call in a
//! session that re-runs the target whenever the files its `inputs` declare
//! change; see the `session` module for the loop's shape.
pub use ;
pub use CacheOptions;
pub use ;
pub use ;
pub use ;
pub use ;
use ;
/// Something that stopped Alba from running the beams as asked.
///
/// Deliberately *not* how a failing beam is reported: a command that exits
/// non-zero — or that could not be spawned at all — is an expected outcome
/// of a run and lands in [`RunSummary::failed`]. An `EngineError` means the
/// run could not be carried out at all, and is what the CLI turns into its
/// exit code 2.