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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//! Types for well-known directories.
//!
//! # Design
//!
//! The designed structure of directories and their contents is as follows:
//!
//! ```bash
//! WorkspaceDir
//! |- PeaceDir
//! |- ProfileDir # "profile_name", multiple
//! |- HistoryDir
//! | |- CmdExecution0
//! | |- ..
//! | |- CmdExecutionN
//! |
//! |- ProfileParams
//! |
//! |- FlowDir # "flow_name", multiple
//! |- StatesMeta
//! |- StatesCurrent
//! |- StatesGoal
//! ```
//!
//! Concrete folder structure example:
//!
//! ```bash
//! workspace
//! |- .peace
//! |- profile1 / main / default
//! | |- .history
//! | | |- 00000000_2022-08-21T20_48_02_init.yaml
//! | | |- 00000001_2022-08-21T20_48_07_dev_env_discover.yaml
//! | | |- 00000002_2022-08-21T20_50_32_dev_env_deploy.yaml # dry
//! | | |- 00000003_2022-08-21T20_50_43_dev_env_deploy.yaml
//! | | |- 00000004_2022-08-22T08_16_09_dev_env_clean.yaml # dry
//! | | |- 00000005_2022-08-22T08_16_29_dev_env_clean.yaml
//! | | |- 00000006_2022-08-23T13_02_14_artifact_discover.yaml
//! | | |- 00000007_2022-08-23T13_07_31_artifact_publish.yaml
//! | |
//! | |- .meta.yaml # Store the last discovered time so we can inform the user.
//! | | # Should time be stored per item, or per invocation?
//! | |
//! | |- dev_env # flow name
//! | | |- states_goal.yaml
//! | | |- states_current.yaml
//! | |
//! | |- artifact
//! | | |- states_goal.yaml
//! | | |- states_current.yaml
//! | |
//! | |- profile_params.yaml # Parameters used to initialize this profile
//! | # We write to this so that each time the user re-`init`s,
//! | # if they version control it, they can rediscover the
//! | # states from previous inits, and clean them up.
//! |
//! |- production
//! | |- .history
//! | | |- 00000000_2022-08-21T20_48_02_init.yaml
//! | | |- 00000001_2022-08-21T20_48_07_discover.yaml
//! | |
//! | |- customer_one
//! | | |- flow_params.yaml
//! | | |- states_goal.yaml
//! | | |- states_current.yaml
//! | |
//! | |- .meta.yaml
//! | |- profile_params.yaml
//! |
//! |- workspace_params.yaml
//! ```
pub use ;
/// Common impl logic for `PathBuf` newtypes.
///
/// This does not include declaring the type, as it may prevent IDEs from
/// discovering the type declaration, making those types harder to discover.
pub use pathbuf_newtype;