1use serde::{Deserialize, Serialize};
2
3#[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#[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#[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#[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#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
68pub enum SharedJobPart {
69 MD,
70 MF,
71 XD,
72 XF,
73}
74
75#[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#[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#[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#[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#[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#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
138#[serde(rename_all = "kebab-case")]
139pub enum SharedJobOptForAttrSize {
140 Decimal,
141 Binary,
142}
143
144#[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#[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#[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#[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#[derive(Debug, Deserialize, Serialize, Clone)]
185#[serde(rename_all = "kebab-case")]
186pub struct RawTomlJobSortNum {
187 pub reverse: bool,
188}
189
190#[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#[derive(Debug, Deserialize, Serialize, Clone)]
203pub struct RawTomlJobStringStrategy(pub [SharedJobStringMode; 3]);
204
205#[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