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
//! Domain primitives for `haz`: workspaces, projects, tasks, references, paths.
//!
//! Every public item in this crate represents a value object: a
//! validated, immutable, infrastructure-free piece of the domain
//! model. The crate has no I/O, no async, and no dependency on
//! any other workspace crate.
//!
//! # Module map
//!
//! - [`name`]: validated identifier newtypes
//! ([`name::ProjectName`], [`name::TagName`], [`name::TaskName`],
//! [`name::MutexName`], [`name::OverlayName`]).
//! - [`path`]: path and pattern primitives ([`path::HazPath`],
//! [`path::PathSegment`], [`path::CanonicalPath`],
//! [`path::WorkspaceRootPath`], [`path::PathPattern`],
//! [`path::InputSpec`], [`path::OutputSpec`]).
//! - [`task_ref`]: textual task references ([`task_ref::TaskRef`]).
//! - [`task_id`]: resolved task identity ([`task_id::TaskId`]).
//! - [`action`]: what a task does
//! ([`action::TaskAction`], [`action::ShellType`],
//! [`action::NonEmptyAsciiName`]).
//! - [`env`](mod@env): per-task environment-variable settings
//! ([`env::EnvVarName`], [`env::EnvSettings`]).
//! - [`mutex`]: per-task mutex aggregate
//! ([`mutex::Mutex`], [`mutex::MutexScope`], [`mutex::MutexMode`]).
//! - [`settings`]: workspace-wide settings ([`settings::WorkspaceSettings`]
//! plus the sub-modules for cache, concurrency, output, and execution).
//! - [`task`]: the [`task::Task`] aggregate.
//! - [`project`]: the [`project::Project`] aggregate.
//! - [`overlay`]: the [`overlay::Overlay`] aggregate.
//! - [`workspace`]: the [`workspace::Workspace`] aggregate.
//! - [`resolution`]: pure-domain reference resolution
//! ([`resolution::resolve_task_ref`], [`resolution::ResolutionError`]).
//! - [`scope`]: task-set scope selection ([`scope::Scope`]) shared by
//! `haz run` target resolution and `haz check` validation counting.