Skip to main content

plot/lib/schema/
job_raw_toml.rs

1use serde::{Deserialize, Serialize};
2
3// ░░░░░░░░░░░░░░░░░░░░ all【jobs】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
4
5#[derive(Debug, Deserialize, Serialize)]
6#[serde(rename_all = "kebab-case")]
7pub struct RawTomlFileJobs {
8	pub job: RawTomlJobs,
9}
10
11#[derive(Debug, Deserialize)]
12pub struct RawTomlValidJobs {
13	pub job: Vec<RawTomlValidJob>,
14}
15
16#[derive(Debug, Deserialize, Serialize)]
17#[serde(transparent)]
18pub struct RawTomlJobs(pub Vec<RawTomlJob>);
19
20// ░░░░░░░░░░░░░░░░░░░░ one【job】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
21
22#[derive(Debug, Deserialize)]
23pub struct RawTomlValidJob {
24	pub id: String,
25	pub description: Option<String>,
26}
27
28#[derive(Debug, Deserialize, Serialize, Clone)]
29#[serde(rename_all = "kebab-case")]
30pub struct RawTomlJob {
31	pub id: String,
32	pub description: Option<String>,
33	pub run_mode: Option<Vec<SharedJobRunMode>>,
34	pub explorer: Option<RawTomlJobExplorer>,
35	pub export: Option<RawTomlJobExport>,
36	pub attributes: Option<RawTomlJobAttributes>,
37	pub tuples: Option<RawTomlJobTuples>,
38}
39
40// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【run_mode】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
41
42#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
43#[serde(rename_all = "kebab-case")]
44pub enum SharedJobRunMode {
45	DryRun,
46	Save,
47	SaveWithInspection,
48	PrintNothing,
49	PrintOnlyWarning,
50	PrintWithInspection,
51	PrintColor,
52}
53
54// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【explorer】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
55
56#[derive(Debug, Deserialize, Serialize, Clone)]
57#[serde(rename_all = "kebab-case")]
58pub struct RawTomlJobExplorer {
59	pub workspace_dir: Option<String>,
60	pub ignore_case: Option<bool>,
61	pub patterns: Option<Vec<String>>,
62	pub parts: Option<Vec<SharedJobPart>>,
63}
64
65// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【explorer】➔【part】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
66
67#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
68pub enum SharedJobPart {
69	MD,
70	MF,
71	XD,
72	XF,
73}
74
75// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【export】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
76
77#[derive(Debug, Deserialize, Serialize, Clone)]
78#[serde(rename_all = "kebab-case")]
79pub struct RawTomlJobExport {
80	pub out_dir: Option<String>,
81	pub title: Option<String>,
82	pub name: Option<String>,
83	pub name_is_first: Option<bool>,
84	pub save_separately: Option<bool>,
85}
86
87// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【attributes】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
88
89#[derive(Debug, Deserialize, Serialize, Clone)]
90#[serde(rename_all = "kebab-case")]
91pub struct RawTomlJobAttributes {
92	pub select: Option<Vec<SharedJobAttributeToSelect>>,
93	pub option: Option<RawTomlJobAttributesOptions>,
94}
95
96// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【attributes】➔【select】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
97
98#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
99#[serde(rename_all = "kebab-case")]
100pub enum SharedJobAttributeToSelect {
101	Date,
102	Time,
103	Size,
104	Item,
105	Path,
106}
107
108// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【attributes】➔【options】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
109
110#[derive(Debug, Deserialize, Serialize, Clone)]
111#[serde(rename_all = "kebab-case")]
112pub struct RawTomlJobAttributesOptions {
113	pub for_item: Option<Vec<SharedJobOptForAttrItem>>,
114	pub for_date: Option<String>,
115	pub for_time: Option<String>,
116	pub for_size: Option<SharedJobOptForAttrSize>,
117}
118
119// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【attributes】➔【options】➔【item】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
120
121#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
122#[serde(rename_all = "kebab-case")]
123pub enum SharedJobOptForAttrItem {
124	ListTree,
125	ListFlat,
126	IconsLite,
127	IconsMore,
128	IconsHide,
129	NumListBef,
130	NumListAft,
131	NameHide,
132	AlignHide,
133}
134
135// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【attributes】➔【options】➔【size】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
136
137#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
138#[serde(rename_all = "kebab-case")]
139pub enum SharedJobOptForAttrSize {
140	Decimal,
141	Binary,
142}
143
144// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
145
146#[derive(Debug, Deserialize, Serialize, Clone)]
147#[serde(rename_all = "kebab-case")]
148pub struct RawTomlJobTuples {
149	pub pile: Option<RawTomlJobTuplesPile>,
150	pub sort: Option<RawTomlJobTuplesSort>,
151}
152
153// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】➔【pile】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
154
155#[derive(Debug, Deserialize, Serialize, Clone)]
156#[serde(tag = "type", rename_all = "kebab-case")]
157pub enum RawTomlJobTuplesPile {
158	Name(RawTomlJobPileMode),
159	Exte(RawTomlJobPileMode),
160}
161
162// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】➔【pile】➔【mode】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
163
164#[derive(Debug, Deserialize, Serialize, Clone)]
165#[serde(rename_all = "kebab-case")]
166pub struct RawTomlJobPileMode {
167	pub dir_first: bool,
168	pub same_name_dirs_and_files_nearby: bool,
169}
170
171// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】➔【sort】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
172
173#[derive(Debug, Deserialize, Serialize, Clone)]
174#[serde(tag = "type", rename_all = "kebab-case")]
175pub enum RawTomlJobTuplesSort {
176	Date(RawTomlJobSortNum),
177	Size(RawTomlJobSortNum),
178	Path(RawTomlJobSortTex),
179	Name(RawTomlJobSortTex),
180}
181
182// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】➔【sort】➔【num】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
183
184#[derive(Debug, Deserialize, Serialize, Clone)]
185#[serde(rename_all = "kebab-case")]
186pub struct RawTomlJobSortNum {
187	pub reverse: bool,
188}
189
190// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】➔【sort】➔【tex】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
191
192#[derive(Debug, Deserialize, Serialize, Clone)]
193#[serde(rename_all = "kebab-case")]
194pub struct RawTomlJobSortTex {
195	pub reverse: bool,
196	pub mirror: bool,
197	pub string_strategy: RawTomlJobStringStrategy,
198}
199
200// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】➔【sort】➔【tex】➔【strategy】 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░
201
202#[derive(Debug, Deserialize, Serialize, Clone)]
203pub struct RawTomlJobStringStrategy(pub [SharedJobStringMode; 3]);
204
205// ░░░░░░░░░░░░░░░░░░░░ 【job】➔【tuples】➔【sort】➔【tex】➔【strategy】➔【mode】 ░░░░░░░░░░░░░░░░░░░
206
207#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
208#[allow(non_camel_case_types)]
209pub enum SharedJobStringMode {
210	Spec,
211	Num,
212	AaZz,
213	aAzZ,
214	AZaz,
215	azAZ,
216}
217
218// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
219// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
220// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░