datatruck 0.32.0 → 0.32.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,933 +1,1046 @@
1
1
  {
2
- "definitions": {
3
- "stringlist-util": {
2
+ "type": "object",
3
+ "properties": {
4
+ "$schema": {
5
+ "type": "string"
6
+ },
7
+ "tempDir": {
8
+ "type": "string"
9
+ },
10
+ "minFreeDiskSpace": {
11
+ "type": [
12
+ "string",
13
+ "number"
14
+ ]
15
+ },
16
+ "repositories": {
4
17
  "type": "array",
5
18
  "items": {
6
- "type": "string"
19
+ "$ref": "#/definitions/RepositoryConfig"
7
20
  }
8
21
  },
9
- "repository": {
10
- "type": "object",
11
- "additionalProperties": false,
12
- "required": [
13
- "type",
14
- "name"
15
- ],
16
- "properties": {
17
- "type": {
18
- "type": "string"
19
- },
20
- "name": {
21
- "type": "string"
22
- },
23
- "mirrorRepoNames": {
24
- "$ref": "#/definitions/stringlist-util"
25
- },
26
- "enabled": {
27
- "anyOf": [
28
- {
29
- "type": "boolean"
30
- },
31
- {
32
- "type": "object",
33
- "additionalProperties": false,
34
- "properties": {
35
- "defaults": {
36
- "type": "boolean"
37
- },
38
- "backup": {
39
- "type": "boolean"
40
- },
41
- "init": {
42
- "type": "boolean"
43
- },
44
- "prune": {
45
- "type": "boolean"
46
- },
47
- "restore": {
48
- "type": "boolean"
49
- },
50
- "snapshots": {
51
- "type": "boolean"
52
- }
53
- }
54
- }
55
- ]
56
- },
57
- "config": {}
58
- },
59
- "anyOf": [
60
- {
61
- "if": {
62
- "type": "object",
63
- "properties": {
64
- "type": {
65
- "const": "restic"
66
- }
67
- }
68
- },
69
- "then": {
70
- "type": "object",
71
- "properties": {
72
- "config": {
73
- "$ref": "#/definitions/restic-repository"
74
- }
75
- }
76
- },
77
- "else": false
78
- },
79
- {
80
- "if": {
81
- "type": "object",
82
- "properties": {
83
- "type": {
84
- "const": "datatruck"
85
- }
86
- }
87
- },
88
- "then": {
89
- "type": "object",
90
- "properties": {
91
- "config": {
92
- "$ref": "#/definitions/datatruck-repository"
93
- }
94
- }
95
- },
96
- "else": false
97
- },
98
- {
99
- "if": {
100
- "type": "object",
101
- "properties": {
102
- "type": {
103
- "const": "git"
104
- }
105
- }
22
+ "packages": {
23
+ "type": "array",
24
+ "items": {
25
+ "type": "object",
26
+ "properties": {
27
+ "name": {
28
+ "type": "string"
106
29
  },
107
- "then": {
108
- "type": "object",
109
- "properties": {
110
- "config": {
111
- "$ref": "#/definitions/git-repository"
112
- }
113
- }
30
+ "enabled": {
31
+ "type": "boolean"
114
32
  },
115
- "else": false
116
- }
117
- ]
118
- },
119
- "package": {
120
- "type": "object",
121
- "required": [
122
- "name"
123
- ],
124
- "additionalProperties": false,
125
- "properties": {
126
- "name": {
127
- "type": "string"
128
- },
129
- "enabled": {
130
- "type": "boolean"
131
- },
132
- "task": {
133
- "$ref": "#/definitions/task"
134
- },
135
- "path": {
136
- "type": "string"
137
- },
138
- "restorePath": {
139
- "type": "string"
140
- },
141
- "meta": {
142
- "type": "object"
143
- },
144
- "restorePermissions": {
145
- "type": "object",
146
- "required": [
147
- "uid",
148
- "gid"
149
- ],
150
- "additionalProperties": false,
151
- "properties": {
152
- "uid": {
153
- "anyOf": [
154
- {
155
- "type": "string"
156
- },
157
- {
158
- "type": "integer"
159
- }
160
- ]
161
- },
162
- "gid": {
163
- "anyOf": [
164
- {
165
- "type": "string"
166
- },
167
- {
168
- "type": "integer"
169
- }
170
- ]
171
- }
172
- }
173
- },
174
- "include": {
175
- "type": "array",
176
- "items": {
33
+ "task": {
177
34
  "anyOf": [
178
35
  {
179
- "type": "string"
36
+ "type": "object",
37
+ "properties": {
38
+ "name": {
39
+ "type": "string",
40
+ "const": "git"
41
+ },
42
+ "config": {
43
+ "type": "object",
44
+ "properties": {
45
+ "command": {
46
+ "type": "string"
47
+ },
48
+ "includeModified": {
49
+ "default": true,
50
+ "anyOf": [
51
+ {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string"
55
+ }
56
+ },
57
+ {
58
+ "type": "boolean"
59
+ }
60
+ ]
61
+ },
62
+ "includeUntracked": {
63
+ "default": true,
64
+ "anyOf": [
65
+ {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "string"
69
+ }
70
+ },
71
+ {
72
+ "type": "boolean"
73
+ }
74
+ ]
75
+ },
76
+ "includeIgnored": {
77
+ "default": false,
78
+ "anyOf": [
79
+ {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "string"
83
+ }
84
+ },
85
+ {
86
+ "type": "boolean"
87
+ }
88
+ ]
89
+ },
90
+ "includeConfig": {
91
+ "default": true,
92
+ "type": "boolean"
93
+ },
94
+ "fileCopyConcurrency": {
95
+ "default": 1,
96
+ "type": "number"
97
+ }
98
+ },
99
+ "additionalProperties": false
100
+ }
101
+ },
102
+ "additionalProperties": false
180
103
  },
181
104
  {
182
- "$ref": "#/definitions/script-task_step"
183
- }
184
- ]
185
- }
186
- },
187
- "exclude": {
188
- "type": "array",
189
- "items": {
190
- "anyOf": [
105
+ "type": "object",
106
+ "properties": {
107
+ "name": {
108
+ "type": "string",
109
+ "const": "mariadb"
110
+ },
111
+ "config": {
112
+ "type": "object",
113
+ "properties": {
114
+ "command": {
115
+ "type": "string"
116
+ },
117
+ "hostname": {
118
+ "type": "string"
119
+ },
120
+ "username": {
121
+ "type": "string"
122
+ },
123
+ "password": {
124
+ "anyOf": [
125
+ {
126
+ "type": "object",
127
+ "properties": {
128
+ "path": {
129
+ "type": "string"
130
+ }
131
+ },
132
+ "additionalProperties": false
133
+ },
134
+ {
135
+ "type": "string"
136
+ }
137
+ ]
138
+ },
139
+ "includeTables": {
140
+ "type": "array",
141
+ "items": {
142
+ "type": "string"
143
+ }
144
+ },
145
+ "excludeTables": {
146
+ "type": "array",
147
+ "items": {
148
+ "type": "string"
149
+ }
150
+ },
151
+ "includeDatabases": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "string"
155
+ }
156
+ },
157
+ "excludeDatabases": {
158
+ "type": "array",
159
+ "items": {
160
+ "type": "string"
161
+ }
162
+ },
163
+ "parallel": {
164
+ "default": "auto",
165
+ "anyOf": [
166
+ {
167
+ "const": "auto",
168
+ "type": "string"
169
+ },
170
+ {
171
+ "type": "number"
172
+ }
173
+ ]
174
+ },
175
+ "compress": {
176
+ "anyOf": [
177
+ {
178
+ "type": "object",
179
+ "properties": {
180
+ "command": {
181
+ "type": "string"
182
+ },
183
+ "args": {
184
+ "type": "array",
185
+ "items": {
186
+ "type": "string"
187
+ }
188
+ }
189
+ },
190
+ "additionalProperties": false
191
+ },
192
+ {
193
+ "type": "object",
194
+ "properties": {
195
+ "type": {
196
+ "enum": [
197
+ "gzip",
198
+ "pigz"
199
+ ],
200
+ "type": "string"
201
+ },
202
+ "args": {
203
+ "type": "array",
204
+ "items": {
205
+ "type": "string"
206
+ }
207
+ }
208
+ },
209
+ "additionalProperties": false
210
+ }
211
+ ]
212
+ }
213
+ },
214
+ "additionalProperties": false
215
+ }
216
+ },
217
+ "additionalProperties": false
218
+ },
191
219
  {
192
- "type": "string"
220
+ "type": "object",
221
+ "properties": {
222
+ "name": {
223
+ "type": "string",
224
+ "const": "mssql"
225
+ },
226
+ "config": {
227
+ "type": "object",
228
+ "properties": {
229
+ "command": {
230
+ "type": "string"
231
+ },
232
+ "hostname": {
233
+ "type": "string"
234
+ },
235
+ "username": {
236
+ "type": "string"
237
+ },
238
+ "passwordFile": {
239
+ "type": "string"
240
+ },
241
+ "targetDatabase": {
242
+ "type": "string"
243
+ },
244
+ "includeDatabases": {
245
+ "type": "array",
246
+ "items": {
247
+ "type": "string"
248
+ }
249
+ },
250
+ "excludeDatabases": {
251
+ "type": "array",
252
+ "items": {
253
+ "type": "string"
254
+ }
255
+ }
256
+ },
257
+ "additionalProperties": false
258
+ }
259
+ },
260
+ "additionalProperties": false
193
261
  },
194
262
  {
195
- "$ref": "#/definitions/script-task_step"
196
- }
197
- ]
198
- }
199
- },
200
- "repositoryNames": {
201
- "$ref": "#/definitions/stringlist-util"
202
- },
203
- "repositoryConfigs": {
204
- "type": "array",
205
- "items": {
206
- "$ref": "#/definitions/package-repository"
207
- }
208
- },
209
- "prunePolicy": {
210
- "$ref": "#/definitions/prune-policy"
211
- }
212
- }
213
- },
214
- "package-repository": {
215
- "type": "object",
216
- "additionalProperties": false,
217
- "required": [
218
- "type"
219
- ],
220
- "properties": {
221
- "type": {
222
- "type": "string"
223
- },
224
- "names": {
225
- "$ref": "#/definitions/stringlist-util"
226
- },
227
- "config": {}
228
- },
229
- "anyOf": [
230
- {
231
- "if": {
232
- "type": "object",
233
- "properties": {
234
- "type": {
235
- "const": "restic"
236
- }
237
- }
238
- },
239
- "then": {
240
- "type": "object",
241
- "properties": {
242
- "config": {
243
- "$ref": "#/definitions/restic-package-repository"
244
- }
245
- }
246
- },
247
- "else": false
248
- },
249
- {
250
- "if": {
251
- "type": "object",
252
- "properties": {
253
- "type": {
254
- "const": "datatruck"
255
- }
256
- }
257
- },
258
- "then": {
259
- "type": "object",
260
- "properties": {
261
- "config": {
262
- "$ref": "#/definitions/datatruck-package-repository"
263
- }
264
- }
265
- },
266
- "else": false
267
- },
268
- {
269
- "if": {
270
- "type": "object",
271
- "properties": {
272
- "type": {
273
- "const": "git"
274
- }
275
- }
276
- },
277
- "then": {
278
- "type": "object",
279
- "properties": {
280
- "config": {
281
- "$ref": "#/definitions/git-package-repository"
282
- }
283
- }
284
- },
285
- "else": false
286
- }
287
- ]
288
- },
289
- "task": {
290
- "type": "object",
291
- "required": [
292
- "name"
293
- ],
294
- "properties": {
295
- "name": {
296
- "enum": [
297
- "git",
298
- "mariadb",
299
- "mssql",
300
- "mysql-dump",
301
- "postgresql-dump",
302
- "script"
303
- ]
304
- },
305
- "config": {}
306
- },
307
- "anyOf": [
308
- {
309
- "if": {
310
- "type": "object",
311
- "properties": {
312
- "name": {
313
- "const": "git"
314
- }
315
- }
316
- },
317
- "then": {
318
- "type": "object",
319
- "properties": {
320
- "config": {
321
- "$ref": "#/definitions/git-task"
322
- }
323
- }
324
- },
325
- "else": false
326
- },
327
- {
328
- "if": {
329
- "type": "object",
330
- "properties": {
331
- "name": {
332
- "const": "mariadb"
263
+ "type": "object",
264
+ "properties": {
265
+ "name": {
266
+ "type": "string",
267
+ "const": "mysql-dump"
268
+ },
269
+ "config": {
270
+ "$ref": "#/definitions/MysqlDumpTaskConfig"
271
+ }
272
+ },
273
+ "additionalProperties": false
274
+ },
275
+ {
276
+ "type": "object",
277
+ "properties": {
278
+ "name": {
279
+ "type": "string",
280
+ "const": "postgresql-dump"
281
+ },
282
+ "config": {
283
+ "type": "object",
284
+ "properties": {
285
+ "password": {
286
+ "anyOf": [
287
+ {
288
+ "type": "object",
289
+ "properties": {
290
+ "path": {
291
+ "type": "string"
292
+ }
293
+ },
294
+ "additionalProperties": false
295
+ },
296
+ {
297
+ "type": "string"
298
+ }
299
+ ]
300
+ },
301
+ "hostname": {
302
+ "type": "string"
303
+ },
304
+ "port": {
305
+ "type": "number"
306
+ },
307
+ "database": {
308
+ "type": "string"
309
+ },
310
+ "username": {
311
+ "type": "string"
312
+ },
313
+ "storedPrograms": {
314
+ "default": true,
315
+ "type": "boolean"
316
+ },
317
+ "targetDatabase": {
318
+ "type": "object",
319
+ "properties": {
320
+ "name": {
321
+ "type": "string"
322
+ },
323
+ "charset": {
324
+ "type": "string"
325
+ },
326
+ "collate": {
327
+ "type": "string"
328
+ }
329
+ },
330
+ "additionalProperties": false
331
+ },
332
+ "includeTables": {
333
+ "type": "array",
334
+ "items": {
335
+ "type": "string"
336
+ }
337
+ },
338
+ "excludeTables": {
339
+ "type": "array",
340
+ "items": {
341
+ "type": "string"
342
+ }
343
+ },
344
+ "oneFileByTable": {
345
+ "type": "boolean"
346
+ }
347
+ },
348
+ "additionalProperties": false
349
+ }
350
+ },
351
+ "additionalProperties": false
352
+ },
353
+ {
354
+ "type": "object",
355
+ "properties": {
356
+ "name": {
357
+ "type": "string",
358
+ "const": "script"
359
+ },
360
+ "config": {
361
+ "type": "object",
362
+ "properties": {
363
+ "env": {
364
+ "type": "object",
365
+ "additionalProperties": {
366
+ "type": "string"
367
+ }
368
+ },
369
+ "backupSteps": {
370
+ "type": "array",
371
+ "items": {
372
+ "$ref": "#/definitions/SpawnStep"
373
+ }
374
+ },
375
+ "restoreSteps": {
376
+ "type": "array",
377
+ "items": {
378
+ "$ref": "#/definitions/SpawnStep"
379
+ }
380
+ }
381
+ },
382
+ "additionalProperties": false
383
+ }
384
+ },
385
+ "additionalProperties": false
333
386
  }
334
- }
387
+ ]
335
388
  },
336
- "then": {
337
- "type": "object",
338
- "properties": {
339
- "config": {
340
- "$ref": "#/definitions/mariadb-task"
341
- }
342
- }
389
+ "path": {
390
+ "type": "string"
343
391
  },
344
- "else": false
345
- },
346
- {
347
- "if": {
348
- "type": "object",
349
- "properties": {
350
- "name": {
351
- "const": "mssql"
352
- }
353
- }
392
+ "restorePath": {
393
+ "type": "string"
354
394
  },
355
- "then": {
395
+ "meta": {
356
396
  "type": "object",
357
- "properties": {
358
- "config": {
359
- "$ref": "#/definitions/mssql-task"
360
- }
361
- }
397
+ "additionalProperties": {}
362
398
  },
363
- "else": false
364
- },
365
- {
366
- "if": {
399
+ "restorePermissions": {
367
400
  "type": "object",
368
401
  "properties": {
369
- "name": {
370
- "const": "mysql-dump"
402
+ "uid": {
403
+ "type": [
404
+ "string",
405
+ "number"
406
+ ]
407
+ },
408
+ "gid": {
409
+ "type": [
410
+ "string",
411
+ "number"
412
+ ]
371
413
  }
372
- }
414
+ },
415
+ "additionalProperties": false
373
416
  },
374
- "then": {
375
- "type": "object",
376
- "properties": {
377
- "config": {
378
- "$ref": "#/definitions/mysql-dump-task"
379
- }
417
+ "include": {
418
+ "type": "array",
419
+ "items": {
420
+ "anyOf": [
421
+ {
422
+ "type": "object",
423
+ "properties": {
424
+ "type": {
425
+ "type": "string",
426
+ "const": "process"
427
+ },
428
+ "config": {
429
+ "$ref": "#/definitions/ProcessStepConfig"
430
+ }
431
+ },
432
+ "additionalProperties": false
433
+ },
434
+ {
435
+ "type": "object",
436
+ "properties": {
437
+ "type": {
438
+ "type": "string",
439
+ "const": "node"
440
+ },
441
+ "config": {
442
+ "$ref": "#/definitions/NodeStepConfig"
443
+ }
444
+ },
445
+ "additionalProperties": false
446
+ },
447
+ {
448
+ "type": "string"
449
+ }
450
+ ]
380
451
  }
381
452
  },
382
- "else": false
383
- },
384
- {
385
- "if": {
386
- "type": "object",
387
- "properties": {
388
- "name": {
389
- "const": "postgresql-dump"
390
- }
453
+ "exclude": {
454
+ "type": "array",
455
+ "items": {
456
+ "anyOf": [
457
+ {
458
+ "type": "object",
459
+ "properties": {
460
+ "type": {
461
+ "type": "string",
462
+ "const": "process"
463
+ },
464
+ "config": {
465
+ "$ref": "#/definitions/ProcessStepConfig"
466
+ }
467
+ },
468
+ "additionalProperties": false
469
+ },
470
+ {
471
+ "type": "object",
472
+ "properties": {
473
+ "type": {
474
+ "type": "string",
475
+ "const": "node"
476
+ },
477
+ "config": {
478
+ "$ref": "#/definitions/NodeStepConfig"
479
+ }
480
+ },
481
+ "additionalProperties": false
482
+ },
483
+ {
484
+ "type": "string"
485
+ }
486
+ ]
391
487
  }
392
488
  },
393
- "then": {
394
- "type": "object",
395
- "properties": {
396
- "config": {
397
- "$ref": "#/definitions/postgresql-dump-task"
398
- }
489
+ "repositoryNames": {
490
+ "type": "array",
491
+ "items": {
492
+ "type": "string"
399
493
  }
400
494
  },
401
- "else": false
402
- },
403
- {
404
- "if": {
405
- "type": "object",
406
- "properties": {
407
- "name": {
408
- "const": "script"
409
- }
410
- }
495
+ "prunePolicy": {
496
+ "$ref": "#/definitions/PrunePolicyConfig"
411
497
  },
412
- "then": {
413
- "type": "object",
414
- "properties": {
415
- "config": {
416
- "$ref": "#/definitions/script-task"
417
- }
498
+ "repositoryConfigs": {
499
+ "type": "array",
500
+ "items": {
501
+ "$ref": "#/definitions/PackageRepositoryConfig"
418
502
  }
419
- },
420
- "else": false
421
- }
422
- ]
423
- },
424
- "git-repository": {
425
- "type": "object",
426
- "additionalProperties": false,
427
- "required": [
428
- "repo"
429
- ],
430
- "properties": {
431
- "repo": {
432
- "type": "string"
503
+ }
433
504
  },
434
- "branch": {
435
- "type": "string"
436
- }
505
+ "additionalProperties": false
437
506
  }
438
507
  },
439
- "git-package-repository": {
440
- "type": "object",
441
- "additionalProperties": false,
442
- "properties": {}
443
- },
444
- "datatruck-repository": {
508
+ "server": {
445
509
  "type": "object",
446
- "required": [
447
- "backend"
448
- ],
449
- "additionalProperties": false,
450
510
  "properties": {
451
- "backend": {
452
- "type": "string"
511
+ "log": {
512
+ "type": "boolean"
453
513
  },
454
- "compress": {
455
- "anyOf": [
456
- {
514
+ "repository": {
515
+ "type": "object",
516
+ "properties": {
517
+ "enabled": {
457
518
  "type": "boolean"
458
519
  },
459
- {
460
- "$ref": "#/definitions/compress-util"
520
+ "listen": {
521
+ "type": "object",
522
+ "properties": {
523
+ "port": {
524
+ "type": "number"
525
+ },
526
+ "address": {
527
+ "type": "string"
528
+ }
529
+ },
530
+ "additionalProperties": false
531
+ },
532
+ "trustProxy": {
533
+ "anyOf": [
534
+ {
535
+ "type": "object",
536
+ "properties": {
537
+ "remoteAddressHeader": {
538
+ "type": "string"
539
+ }
540
+ },
541
+ "additionalProperties": false
542
+ },
543
+ {
544
+ "const": true,
545
+ "type": "boolean"
546
+ }
547
+ ]
548
+ },
549
+ "allowlist": {
550
+ "type": "object",
551
+ "properties": {
552
+ "enabled": {
553
+ "default": true,
554
+ "type": "boolean"
555
+ },
556
+ "remoteAddresses": {
557
+ "type": "array",
558
+ "items": {
559
+ "type": "string"
560
+ }
561
+ }
562
+ },
563
+ "additionalProperties": false
564
+ },
565
+ "backends": {
566
+ "type": "array",
567
+ "items": {
568
+ "type": "object",
569
+ "properties": {
570
+ "name": {
571
+ "type": "string"
572
+ },
573
+ "path": {
574
+ "type": "string"
575
+ },
576
+ "users": {
577
+ "type": "array",
578
+ "items": {
579
+ "type": "object",
580
+ "properties": {
581
+ "enabled": {
582
+ "type": "boolean"
583
+ },
584
+ "name": {
585
+ "type": "string"
586
+ },
587
+ "password": {
588
+ "type": "string"
589
+ }
590
+ },
591
+ "additionalProperties": false
592
+ }
593
+ }
594
+ },
595
+ "additionalProperties": false
596
+ }
461
597
  }
462
- ]
463
- }
464
- }
465
- },
466
- "datatruck-package-repository": {
467
- "type": "object",
468
- "additionalProperties": false,
469
- "properties": {
470
- "compress": {
471
- "anyOf": [
472
- {
598
+ },
599
+ "additionalProperties": false
600
+ },
601
+ "cron": {
602
+ "type": "object",
603
+ "properties": {
604
+ "enabled": {
473
605
  "type": "boolean"
474
606
  },
475
- {
476
- "$ref": "#/definitions/compress-util"
607
+ "actions": {
608
+ "type": "array",
609
+ "items": {
610
+ "$ref": "#/definitions/CronAction"
611
+ }
477
612
  }
478
- ]
479
- },
480
- "packs": {
481
- "type": "array",
482
- "items": {
483
- "type": "object",
484
- "additionalProperties": false,
485
- "properties": {
486
- "name": {
487
- "type": "string"
488
- },
489
- "compress": {
490
- "anyOf": [
491
- {
492
- "type": "boolean"
613
+ },
614
+ "additionalProperties": false
615
+ }
616
+ },
617
+ "additionalProperties": false
618
+ },
619
+ "reports": {
620
+ "type": "array",
621
+ "items": {
622
+ "type": "object",
623
+ "properties": {
624
+ "when": {
625
+ "enum": [
626
+ "error",
627
+ "success"
628
+ ],
629
+ "type": "string"
630
+ },
631
+ "format": {
632
+ "enum": [
633
+ "json",
634
+ "list",
635
+ "pjson",
636
+ "table",
637
+ "yaml"
638
+ ],
639
+ "type": "string"
640
+ },
641
+ "run": {
642
+ "anyOf": [
643
+ {
644
+ "type": "object",
645
+ "properties": {
646
+ "type": {
647
+ "type": "string",
648
+ "const": "process"
493
649
  },
494
- {
495
- "$ref": "#/definitions/compress-util"
650
+ "config": {
651
+ "$ref": "#/definitions/ProcessStepConfig"
496
652
  }
497
- ]
653
+ },
654
+ "additionalProperties": false
498
655
  },
499
- "include": {
500
- "$ref": "#/definitions/stringlist-util"
656
+ {
657
+ "type": "object",
658
+ "properties": {
659
+ "type": {
660
+ "type": "string",
661
+ "const": "node"
662
+ },
663
+ "config": {
664
+ "$ref": "#/definitions/NodeStepConfig"
665
+ }
666
+ },
667
+ "additionalProperties": false
501
668
  },
502
- "exclude": {
503
- "$ref": "#/definitions/stringlist-util"
669
+ {
670
+ "type": "object",
671
+ "properties": {
672
+ "type": {
673
+ "type": "string",
674
+ "const": "telegram"
675
+ },
676
+ "config": {
677
+ "type": "object",
678
+ "properties": {
679
+ "bot": {
680
+ "type": "string"
681
+ },
682
+ "chatId": {
683
+ "type": "number"
684
+ }
685
+ },
686
+ "additionalProperties": false
687
+ }
688
+ },
689
+ "additionalProperties": false
504
690
  },
505
- "onePackByResult": {
506
- "type": "boolean"
507
- }
508
- }
509
- }
510
- }
511
- }
512
- },
513
- "restic-repository": {
514
- "type": "object",
515
- "required": [
516
- "password",
517
- "repository"
518
- ],
519
- "additionalProperties": false,
520
- "properties": {
521
- "password": {
522
- "anyOf": [
523
- {
524
- "type": "string"
525
- },
526
- {
527
- "type": "object",
528
- "additionalProperties": false,
529
- "required": [
530
- "path"
531
- ],
532
- "properties": {
533
- "path": {
534
- "type": "string"
535
- }
691
+ {
692
+ "type": "object",
693
+ "properties": {
694
+ "type": {
695
+ "type": "string",
696
+ "const": "ntfy"
697
+ },
698
+ "config": {
699
+ "type": "object",
700
+ "properties": {
701
+ "token": {
702
+ "type": "string"
703
+ },
704
+ "topic": {
705
+ "type": "string"
706
+ }
707
+ },
708
+ "additionalProperties": false
709
+ }
710
+ },
711
+ "additionalProperties": false
536
712
  }
537
- }
538
- ]
713
+ ]
714
+ }
539
715
  },
540
- "repository": {
541
- "type": "object",
716
+ "additionalProperties": false
717
+ }
718
+ },
719
+ "prunePolicy": {
720
+ "$ref": "#/definitions/PrunePolicyConfig"
721
+ }
722
+ },
723
+ "additionalProperties": false,
724
+ "definitions": {
725
+ "RepositoryConfig": {
726
+ "anyOf": [
727
+ {
542
728
  "additionalProperties": false,
543
- "required": [
544
- "backend"
545
- ],
729
+ "type": "object",
546
730
  "properties": {
547
731
  "name": {
548
732
  "type": "string"
549
733
  },
550
- "env": {
551
- "type": "object",
552
- "patternProperties": {
553
- ".+": {
554
- "type": "string"
555
- }
734
+ "mirrorRepoNames": {
735
+ "type": "array",
736
+ "items": {
737
+ "type": "string"
556
738
  }
557
739
  },
558
- "backend": {
559
- "enum": [
560
- "local",
561
- "rest",
562
- "sftp",
563
- "s3",
564
- "azure",
565
- "gs",
566
- "rclone"
567
- ]
568
- },
569
- "protocol": {
570
- "enum": [
571
- "http",
572
- "https"
573
- ]
574
- },
575
- "host": {
576
- "type": "string"
577
- },
578
- "username": {
579
- "type": "string"
580
- },
581
- "password": {
740
+ "enabled": {
582
741
  "anyOf": [
583
742
  {
584
- "type": "string"
743
+ "$ref": "#/definitions/RepositoryEnabledObject"
585
744
  },
586
745
  {
587
- "type": "object",
588
- "additionalProperties": false,
589
- "required": [
590
- "path"
591
- ],
592
- "properties": {
593
- "path": {
594
- "type": "string"
595
- }
596
- }
746
+ "type": "boolean"
597
747
  }
598
748
  ]
599
749
  },
600
- "port": {
601
- "type": "integer"
750
+ "type": {
751
+ "type": "string",
752
+ "const": "restic"
602
753
  },
603
- "path": {
604
- "type": "string"
754
+ "config": {
755
+ "type": "object",
756
+ "properties": {
757
+ "password": {
758
+ "anyOf": [
759
+ {
760
+ "type": "object",
761
+ "properties": {
762
+ "path": {
763
+ "type": "string"
764
+ }
765
+ },
766
+ "additionalProperties": false
767
+ },
768
+ {
769
+ "type": "string"
770
+ }
771
+ ]
772
+ },
773
+ "repository": {
774
+ "$ref": "#/definitions/ResticRepositoryUri"
775
+ }
776
+ },
777
+ "additionalProperties": false
605
778
  }
606
779
  }
607
- }
608
- }
609
- },
610
- "restic-package-repository": {
611
- "type": "object",
612
- "additionalProperties": false,
613
- "properties": {}
614
- },
615
- "git-task": {
616
- "type": "object",
617
- "additionalProperties": false,
618
- "properties": {
619
- "command": {
620
- "type": "string"
621
780
  },
622
- "includeModified": {
623
- "anyOf": [
624
- {
625
- "type": "boolean"
781
+ {
782
+ "additionalProperties": false,
783
+ "type": "object",
784
+ "properties": {
785
+ "name": {
786
+ "type": "string"
626
787
  },
627
- {
628
- "$ref": "#/definitions/stringlist-util"
629
- }
630
- ]
631
- },
632
- "includeUntracked": {
633
- "anyOf": [
634
- {
635
- "type": "boolean"
788
+ "mirrorRepoNames": {
789
+ "type": "array",
790
+ "items": {
791
+ "type": "string"
792
+ }
636
793
  },
637
- {
638
- "$ref": "#/definitions/stringlist-util"
639
- }
640
- ]
641
- },
642
- "includeIgnored": {
643
- "anyOf": [
644
- {
645
- "type": "boolean"
794
+ "enabled": {
795
+ "anyOf": [
796
+ {
797
+ "$ref": "#/definitions/RepositoryEnabledObject"
798
+ },
799
+ {
800
+ "type": "boolean"
801
+ }
802
+ ]
646
803
  },
647
- {
648
- "$ref": "#/definitions/stringlist-util"
649
- }
650
- ]
651
- },
652
- "includeConfig": {
653
- "type": "boolean"
654
- },
655
- "fileCopyConcurrency": {
656
- "type": "integer",
657
- "minimum": 1
658
- }
659
- }
660
- },
661
- "script-task": {
662
- "type": "object",
663
- "additionalProperties": false,
664
- "required": [
665
- "backupSteps",
666
- "restoreSteps"
667
- ],
668
- "properties": {
669
- "env": {
670
- "type": "object",
671
- "patternProperties": {
672
- ".+": {
673
- "type": "string"
674
- }
675
- }
676
- },
677
- "backupSteps": {
678
- "type": "array",
679
- "items": {
680
- "$ref": "#/definitions/script-task_step"
681
- }
682
- },
683
- "restoreSteps": {
684
- "type": "array",
685
- "items": {
686
- "$ref": "#/definitions/script-task_step"
687
- }
688
- }
689
- }
690
- },
691
- "sqldump-task": {
692
- "type": "object",
693
- "required": [
694
- "password",
695
- "hostname",
696
- "username",
697
- "database"
698
- ],
699
- "additionalProperties": false,
700
- "properties": {
701
- "password": {
702
- "anyOf": [
703
- {
704
- "type": "string"
804
+ "type": {
805
+ "type": "string",
806
+ "const": "datatruck"
705
807
  },
706
- {
808
+ "config": {
707
809
  "type": "object",
708
- "additionalProperties": false,
709
- "required": [
710
- "path"
711
- ],
712
810
  "properties": {
713
- "path": {
811
+ "backend": {
714
812
  "type": "string"
813
+ },
814
+ "compress": {
815
+ "anyOf": [
816
+ {
817
+ "type": "object",
818
+ "properties": {
819
+ "level": {
820
+ "type": "number"
821
+ },
822
+ "cores": {
823
+ "anyOf": [
824
+ {
825
+ "type": "object",
826
+ "properties": {
827
+ "percent": {
828
+ "type": "number"
829
+ }
830
+ },
831
+ "additionalProperties": false
832
+ },
833
+ {
834
+ "type": "number"
835
+ }
836
+ ]
837
+ }
838
+ },
839
+ "additionalProperties": false
840
+ },
841
+ {
842
+ "type": "boolean"
843
+ }
844
+ ]
715
845
  }
716
- }
846
+ },
847
+ "additionalProperties": false
717
848
  }
718
- ]
719
- },
720
- "hostname": {
721
- "type": "string"
722
- },
723
- "port": {
724
- "type": "integer"
725
- },
726
- "username": {
727
- "type": "string"
728
- },
729
- "database": {
730
- "type": "string"
849
+ }
731
850
  },
732
- "targetDatabase": {
851
+ {
852
+ "additionalProperties": false,
733
853
  "type": "object",
734
- "required": [
735
- "name"
736
- ],
737
854
  "properties": {
738
855
  "name": {
739
856
  "type": "string"
740
857
  },
741
- "charset": {
742
- "type": "string"
858
+ "mirrorRepoNames": {
859
+ "type": "array",
860
+ "items": {
861
+ "type": "string"
862
+ }
743
863
  },
744
- "collate": {
745
- "type": "string"
864
+ "enabled": {
865
+ "anyOf": [
866
+ {
867
+ "$ref": "#/definitions/RepositoryEnabledObject"
868
+ },
869
+ {
870
+ "type": "boolean"
871
+ }
872
+ ]
873
+ },
874
+ "type": {
875
+ "type": "string",
876
+ "const": "git"
877
+ },
878
+ "config": {
879
+ "type": "object",
880
+ "properties": {
881
+ "repo": {
882
+ "type": "string"
883
+ },
884
+ "branch": {
885
+ "type": "string"
886
+ }
887
+ },
888
+ "additionalProperties": false
746
889
  }
747
890
  }
891
+ }
892
+ ]
893
+ },
894
+ "RepositoryEnabledObject": {
895
+ "type": "object",
896
+ "properties": {
897
+ "snapshots": {
898
+ "type": "boolean"
748
899
  },
749
- "storedPrograms": {
900
+ "init": {
750
901
  "type": "boolean"
751
902
  },
752
- "includeTables": {
753
- "$ref": "#/definitions/stringlist-util"
903
+ "prune": {
904
+ "type": "boolean"
754
905
  },
755
- "excludeTables": {
756
- "$ref": "#/definitions/stringlist-util"
906
+ "backup": {
907
+ "type": "boolean"
757
908
  },
758
- "oneFileByTable": {
909
+ "restore": {
910
+ "type": "boolean"
911
+ },
912
+ "defaults": {
759
913
  "type": "boolean"
760
914
  }
761
- }
915
+ },
916
+ "additionalProperties": false
762
917
  },
763
- "mariadb-task": {
764
- "type": "object",
765
- "required": [
766
- "hostname",
767
- "username",
768
- "password"
769
- ],
918
+ "ResticRepositoryUri": {
770
919
  "additionalProperties": false,
920
+ "type": "object",
771
921
  "properties": {
772
- "command": {
773
- "type": "string"
774
- },
775
- "hostname": {
776
- "type": "string"
777
- },
778
- "username": {
922
+ "name": {
779
923
  "type": "string"
780
924
  },
781
- "password": {
782
- "anyOf": [
783
- {
784
- "type": "string"
785
- },
786
- {
787
- "type": "object",
788
- "additionalProperties": false,
789
- "required": [
790
- "path"
791
- ],
792
- "properties": {
793
- "path": {
794
- "type": "string"
795
- }
796
- }
797
- }
798
- ]
799
- },
800
- "includeTables": {
801
- "$ref": "#/definitions/stringlist-util"
802
- },
803
- "excludeTables": {
804
- "$ref": "#/definitions/stringlist-util"
805
- },
806
- "includeDatabases": {
807
- "$ref": "#/definitions/stringlist-util"
808
- },
809
- "excludeDatabases": {
810
- "$ref": "#/definitions/stringlist-util"
811
- },
812
- "parallel": {
813
- "anyOf": [
814
- {
815
- "type": "integer",
816
- "minimum": 1
817
- },
818
- {
819
- "enum": [
820
- "auto"
821
- ]
822
- }
823
- ]
925
+ "env": {
926
+ "type": "object",
927
+ "additionalProperties": {
928
+ "type": "string"
929
+ }
824
930
  },
825
- "compress": {
931
+ "password": {
826
932
  "anyOf": [
827
933
  {
828
934
  "type": "object",
829
- "additionalProperties": false,
830
935
  "properties": {
831
- "command": {
936
+ "path": {
832
937
  "type": "string"
833
- },
834
- "args": {
835
- "$ref": "#/definitions/stringlist-util"
836
938
  }
837
- }
939
+ },
940
+ "additionalProperties": false
838
941
  },
839
942
  {
840
- "type": "object",
841
- "additionalProperties": false,
842
- "properties": {
843
- "type": {
844
- "enum": [
845
- "gzip",
846
- "pigz"
847
- ]
848
- },
849
- "args": {
850
- "$ref": "#/definitions/stringlist-util"
851
- }
852
- }
943
+ "type": "string"
853
944
  }
854
945
  ]
855
- }
856
- }
857
- },
858
- "mssql-task": {
859
- "type": "object",
860
- "additionalProperties": false,
861
- "properties": {
862
- "command": {
946
+ },
947
+ "backend": {
948
+ "enum": [
949
+ "azure",
950
+ "gs",
951
+ "local",
952
+ "rclone",
953
+ "rest",
954
+ "s3",
955
+ "sftp"
956
+ ],
863
957
  "type": "string"
864
958
  },
865
- "hostname": {
959
+ "path": {
866
960
  "type": "string"
867
961
  },
868
- "username": {
962
+ "protocol": {
963
+ "enum": [
964
+ "http",
965
+ "https"
966
+ ],
869
967
  "type": "string"
870
968
  },
871
- "passwordFile": {
969
+ "host": {
872
970
  "type": "string"
873
971
  },
874
- "includeDatabases": {
875
- "$ref": "#/definitions/stringlist-util"
972
+ "username": {
973
+ "type": "string"
876
974
  },
877
- "excludeDatabases": {
878
- "$ref": "#/definitions/stringlist-util"
975
+ "port": {
976
+ "type": "number"
879
977
  }
880
978
  }
881
979
  },
882
- "mysql-dump-task": {
883
- "type": "object",
884
- "required": [
885
- "password",
886
- "hostname",
887
- "username",
888
- "database"
889
- ],
980
+ "MysqlDumpTaskConfig": {
890
981
  "additionalProperties": false,
982
+ "type": "object",
891
983
  "properties": {
892
984
  "dataFormat": {
985
+ "default": "sql",
893
986
  "enum": [
894
987
  "csv",
895
988
  "sql"
896
- ]
897
- },
898
- "concurrency": {
899
- "type": "integer",
900
- "minimum": 1
989
+ ],
990
+ "type": "string"
901
991
  },
902
992
  "csvSharedPath": {
903
993
  "type": "string"
904
994
  },
995
+ "concurrency": {
996
+ "default": 1,
997
+ "type": "number"
998
+ },
905
999
  "compress": {
906
1000
  "anyOf": [
907
1001
  {
908
- "type": "boolean"
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "level": {
1005
+ "type": "number"
1006
+ },
1007
+ "cores": {
1008
+ "anyOf": [
1009
+ {
1010
+ "type": "object",
1011
+ "properties": {
1012
+ "percent": {
1013
+ "type": "number"
1014
+ }
1015
+ },
1016
+ "additionalProperties": false
1017
+ },
1018
+ {
1019
+ "type": "number"
1020
+ }
1021
+ ]
1022
+ }
1023
+ },
1024
+ "additionalProperties": false
909
1025
  },
910
1026
  {
911
- "$ref": "#/definitions/compress-util"
1027
+ "type": "boolean"
912
1028
  }
913
1029
  ]
914
1030
  },
915
1031
  "password": {
916
1032
  "anyOf": [
917
- {
918
- "type": "string"
919
- },
920
1033
  {
921
1034
  "type": "object",
922
- "additionalProperties": false,
923
- "required": [
924
- "path"
925
- ],
926
1035
  "properties": {
927
1036
  "path": {
928
1037
  "type": "string"
929
1038
  }
930
- }
1039
+ },
1040
+ "additionalProperties": false
1041
+ },
1042
+ {
1043
+ "type": "string"
931
1044
  }
932
1045
  ]
933
1046
  },
@@ -935,19 +1048,20 @@
935
1048
  "type": "string"
936
1049
  },
937
1050
  "port": {
938
- "type": "integer"
1051
+ "type": "number"
939
1052
  },
940
- "username": {
1053
+ "database": {
941
1054
  "type": "string"
942
1055
  },
943
- "database": {
1056
+ "username": {
944
1057
  "type": "string"
945
1058
  },
1059
+ "storedPrograms": {
1060
+ "default": true,
1061
+ "type": "boolean"
1062
+ },
946
1063
  "targetDatabase": {
947
1064
  "type": "object",
948
- "required": [
949
- "name"
950
- ],
951
1065
  "properties": {
952
1066
  "name": {
953
1067
  "type": "string"
@@ -958,568 +1072,407 @@
958
1072
  "collate": {
959
1073
  "type": "string"
960
1074
  }
961
- }
962
- },
963
- "storedPrograms": {
964
- "type": "boolean"
1075
+ },
1076
+ "additionalProperties": false
965
1077
  },
966
1078
  "includeTables": {
967
- "$ref": "#/definitions/stringlist-util"
1079
+ "type": "array",
1080
+ "items": {
1081
+ "type": "string"
1082
+ }
968
1083
  },
969
1084
  "excludeTables": {
970
- "$ref": "#/definitions/stringlist-util"
1085
+ "type": "array",
1086
+ "items": {
1087
+ "type": "string"
1088
+ }
971
1089
  },
972
1090
  "oneFileByTable": {
973
1091
  "type": "boolean"
974
1092
  }
975
1093
  }
976
1094
  },
977
- "postgresql-dump-task": {
978
- "allOf": [
1095
+ "SpawnStep": {
1096
+ "anyOf": [
1097
+ {
1098
+ "type": "object",
1099
+ "properties": {
1100
+ "type": {
1101
+ "type": "string",
1102
+ "const": "process"
1103
+ },
1104
+ "config": {
1105
+ "$ref": "#/definitions/ProcessStepConfig"
1106
+ }
1107
+ },
1108
+ "additionalProperties": false
1109
+ },
979
1110
  {
980
- "$ref": "#/definitions/sqldump-task"
1111
+ "type": "object",
1112
+ "properties": {
1113
+ "type": {
1114
+ "type": "string",
1115
+ "const": "node"
1116
+ },
1117
+ "config": {
1118
+ "$ref": "#/definitions/NodeStepConfig"
1119
+ }
1120
+ },
1121
+ "additionalProperties": false
981
1122
  }
982
1123
  ]
983
1124
  },
984
- "config": {
985
- "type": "object",
986
- "required": [
987
- "repositories",
988
- "packages"
989
- ],
1125
+ "ProcessStepConfig": {
990
1126
  "additionalProperties": false,
1127
+ "type": "object",
991
1128
  "properties": {
992
- "$schema": {
993
- "type": "string"
994
- },
995
- "tempDir": {
996
- "type": "string"
997
- },
998
- "minFreeDiskSpace": {
999
- "anyOf": [
1000
- {
1001
- "type": "integer"
1002
- },
1003
- {
1004
- "type": "string"
1005
- }
1006
- ]
1007
- },
1008
- "reports": {
1009
- "type": "array",
1010
- "items": {
1011
- "type": "object",
1012
- "additionalProperties": false,
1013
- "properties": {
1014
- "when": {
1015
- "enum": [
1016
- "success",
1017
- "error"
1018
- ]
1019
- },
1020
- "format": {
1021
- "enum": [
1022
- "json",
1023
- "list",
1024
- "pjson",
1025
- "table",
1026
- "yaml"
1027
- ]
1028
- },
1029
- "run": {
1030
- "$ref": "#/definitions/script-task_step"
1031
- }
1032
- }
1129
+ "env": {
1130
+ "type": "object",
1131
+ "additionalProperties": {
1132
+ "type": "string"
1033
1133
  }
1034
1134
  },
1035
- "repositories": {
1036
- "type": "array",
1037
- "items": {
1038
- "$ref": "#/definitions/repository"
1039
- }
1135
+ "data": {
1136
+ "type": "object",
1137
+ "additionalProperties": {}
1040
1138
  },
1041
- "packages": {
1139
+ "args": {
1042
1140
  "type": "array",
1043
1141
  "items": {
1044
- "$ref": "#/definitions/package"
1142
+ "type": [
1143
+ "string",
1144
+ "number"
1145
+ ]
1045
1146
  }
1046
1147
  },
1047
- "server": {
1148
+ "command": {
1149
+ "type": "string"
1150
+ }
1151
+ }
1152
+ },
1153
+ "NodeStepConfig": {
1154
+ "additionalProperties": false,
1155
+ "type": "object",
1156
+ "properties": {
1157
+ "env": {
1048
1158
  "type": "object",
1049
- "additionalProperties": false,
1050
- "properties": {
1051
- "log": {
1052
- "type": "boolean"
1053
- },
1054
- "repository": {
1055
- "type": "object",
1056
- "additionalProperties": false,
1057
- "properties": {
1058
- "enabled": {
1059
- "type": "boolean"
1060
- },
1061
- "listen": {
1062
- "type": "object",
1063
- "additionalProperties": false,
1064
- "properties": {
1065
- "port": {
1066
- "type": "integer"
1067
- },
1068
- "address": {
1069
- "type": "string"
1070
- }
1071
- }
1072
- },
1073
- "trustProxy": {
1074
- "anyOf": [
1075
- {
1076
- "type": "boolean"
1077
- },
1078
- {
1079
- "type": "object",
1080
- "additionalProperties": false,
1081
- "required": [
1082
- "remoteAddressHeader"
1083
- ],
1084
- "properties": {
1085
- "remoteAddressHeader": {
1086
- "type": "string"
1087
- }
1088
- }
1089
- }
1090
- ]
1091
- },
1092
- "allowlist": {
1093
- "type": "object",
1094
- "additionalProperties": false,
1095
- "properties": {
1096
- "enabled": {
1097
- "type": "boolean"
1098
- },
1099
- "remoteAddresses": {
1100
- "$ref": "#/definitions/stringlist-util"
1101
- }
1102
- }
1103
- },
1104
- "backends": {
1105
- "type": "array",
1106
- "items": {
1107
- "type": "object",
1108
- "additionalProperties": false,
1109
- "required": [
1110
- "name",
1111
- "path"
1112
- ],
1113
- "properties": {
1114
- "name": {
1115
- "type": "string"
1116
- },
1117
- "path": {
1118
- "type": "string"
1119
- },
1120
- "users": {
1121
- "type": "array",
1122
- "items": {
1123
- "type": "object",
1124
- "additionalProperties": false,
1125
- "required": [
1126
- "name",
1127
- "password"
1128
- ],
1129
- "properties": {
1130
- "enabled": {
1131
- "type": "boolean"
1132
- },
1133
- "name": {
1134
- "type": "string"
1135
- },
1136
- "password": {
1137
- "type": "string"
1138
- }
1139
- }
1140
- }
1141
- }
1142
- }
1143
- }
1144
- }
1145
- }
1146
- },
1147
- "cron": {
1148
- "type": "object",
1149
- "additionalProperties": false,
1150
- "properties": {
1151
- "enabled": {
1152
- "type": "boolean"
1153
- },
1154
- "actions": {
1155
- "type": "array",
1156
- "items": {
1157
- "allOf": [
1158
- {
1159
- "type": "object",
1160
- "required": [
1161
- "schedule"
1162
- ],
1163
- "properties": {
1164
- "schedule": {
1165
- "type": "string"
1166
- }
1167
- }
1168
- },
1169
- {
1170
- "anyOf": [
1171
- {
1172
- "if": {
1173
- "type": "object",
1174
- "properties": {
1175
- "type": {
1176
- "const": "backup"
1177
- }
1178
- }
1179
- },
1180
- "then": {
1181
- "type": "object",
1182
- "properties": {
1183
- "options": {
1184
- "type": "object",
1185
- "additionalProperties": false,
1186
- "properties": {
1187
- "package": {
1188
- "type": "string"
1189
- },
1190
- "packageTask": {
1191
- "type": "string"
1192
- },
1193
- "repository": {
1194
- "type": "string"
1195
- },
1196
- "repositoryType": {
1197
- "enum": [
1198
- "restic",
1199
- "datatruck",
1200
- "git"
1201
- ]
1202
- },
1203
- "tag": {
1204
- "type": "string"
1205
- },
1206
- "date": {
1207
- "type": "string"
1208
- },
1209
- "prune": {
1210
- "type": "boolean"
1211
- }
1212
- }
1213
- }
1214
- }
1215
- },
1216
- "else": false
1217
- },
1218
- {
1219
- "if": {
1220
- "type": "object",
1221
- "properties": {
1222
- "type": {
1223
- "const": "copy"
1224
- }
1225
- }
1226
- },
1227
- "then": {
1228
- "type": "object",
1229
- "properties": {
1230
- "options": {
1231
- "type": "object",
1232
- "additionalProperties": false,
1233
- "properties": {
1234
- "id": {
1235
- "type": "string"
1236
- },
1237
- "last": {
1238
- "type": "integer"
1239
- },
1240
- "package": {
1241
- "type": "string"
1242
- },
1243
- "packageTask": {
1244
- "type": "string"
1245
- },
1246
- "repository": {
1247
- "type": "string"
1248
- },
1249
- "repository2": {
1250
- "type": "string"
1251
- }
1252
- }
1253
- }
1254
- }
1255
- },
1256
- "else": false
1257
- }
1258
- ]
1259
- }
1260
- ]
1261
- }
1262
- }
1263
- }
1264
- }
1159
+ "additionalProperties": {
1160
+ "type": "string"
1265
1161
  }
1266
1162
  },
1267
- "prunePolicy": {
1268
- "$ref": "#/definitions/prune-policy"
1163
+ "data": {
1164
+ "type": "object",
1165
+ "additionalProperties": {}
1166
+ },
1167
+ "args": {
1168
+ "type": "array",
1169
+ "items": {
1170
+ "type": [
1171
+ "string",
1172
+ "number"
1173
+ ]
1174
+ }
1175
+ },
1176
+ "code": {
1177
+ "anyOf": [
1178
+ {
1179
+ "type": "array",
1180
+ "items": {
1181
+ "type": "string"
1182
+ }
1183
+ },
1184
+ {
1185
+ "type": "string"
1186
+ }
1187
+ ]
1269
1188
  }
1270
1189
  }
1271
1190
  },
1272
- "prune-policy": {
1191
+ "PrunePolicyConfig": {
1273
1192
  "type": "object",
1274
1193
  "properties": {
1194
+ "tags": {
1195
+ "type": "array",
1196
+ "items": {
1197
+ "type": "string"
1198
+ }
1199
+ },
1275
1200
  "keepDaily": {
1276
- "type": "integer"
1201
+ "type": "number"
1277
1202
  },
1278
1203
  "keepHourly": {
1279
- "type": "integer"
1204
+ "type": "number"
1280
1205
  },
1281
1206
  "keepMinutely": {
1282
- "type": "integer"
1207
+ "type": "number"
1283
1208
  },
1284
1209
  "keepLast": {
1285
- "type": "integer"
1210
+ "type": "number"
1286
1211
  },
1287
1212
  "keepMonthly": {
1288
- "type": "integer"
1213
+ "type": "number"
1289
1214
  },
1290
1215
  "keepWeekly": {
1291
- "type": "integer"
1216
+ "type": "number"
1292
1217
  },
1293
1218
  "keepYearly": {
1294
- "type": "integer"
1219
+ "type": "number"
1295
1220
  },
1296
1221
  "groupBy": {
1297
1222
  "type": "array",
1298
1223
  "items": {
1299
- "type": "string",
1300
1224
  "enum": [
1301
1225
  "packageName",
1302
1226
  "repositoryName",
1303
1227
  "repositoryType"
1304
- ]
1228
+ ],
1229
+ "type": "string"
1305
1230
  }
1306
- },
1307
- "tags": {
1308
- "$ref": "#/definitions/stringlist-util"
1309
- }
1310
- }
1311
- },
1312
- "compress-util": {
1313
- "type": "object",
1314
- "additionalProperties": false,
1315
- "properties": {
1316
- "level": {
1317
- "type": "integer"
1318
- },
1319
- "cores": {
1320
- "anyOf": [
1321
- {
1322
- "type": "integer"
1323
- },
1324
- {
1325
- "type": "object",
1326
- "required": [
1327
- "percent"
1328
- ],
1329
- "properties": {
1330
- "percent": {
1331
- "type": "integer"
1332
- }
1333
- }
1334
- }
1335
- ]
1336
1231
  }
1337
- }
1338
- },
1339
- "script-task_step": {
1340
- "type": "object",
1341
- "required": [
1342
- "type"
1343
- ],
1344
- "properties": {
1345
- "type": {
1346
- "enum": [
1347
- "process",
1348
- "node",
1349
- "telegram-message",
1350
- "ntfy"
1351
- ]
1352
- },
1353
- "config": {}
1354
1232
  },
1233
+ "additionalProperties": false
1234
+ },
1235
+ "PackageRepositoryConfig": {
1355
1236
  "anyOf": [
1356
1237
  {
1357
- "if": {
1358
- "type": "object",
1359
- "properties": {
1360
- "type": {
1361
- "const": "process"
1362
- }
1363
- }
1364
- },
1365
- "then": {
1366
- "type": "object",
1367
- "properties": {
1368
- "config": {
1369
- "$ref": "#/definitions/script-task_processStepConfig"
1370
- }
1371
- }
1372
- },
1373
- "else": false
1374
- },
1375
- {
1376
- "if": {
1377
- "type": "object",
1378
- "properties": {
1379
- "type": {
1380
- "const": "node"
1381
- }
1382
- }
1383
- },
1384
- "then": {
1385
- "type": "object",
1386
- "properties": {
1387
- "config": {
1388
- "$ref": "#/definitions/script-task_nodeStepConfig"
1238
+ "additionalProperties": false,
1239
+ "type": "object",
1240
+ "properties": {
1241
+ "names": {
1242
+ "type": "array",
1243
+ "items": {
1244
+ "type": "string"
1389
1245
  }
1246
+ },
1247
+ "type": {
1248
+ "type": "string",
1249
+ "const": "restic"
1250
+ },
1251
+ "config": {
1252
+ "type": "object",
1253
+ "properties": {}
1390
1254
  }
1391
- },
1392
- "else": false
1255
+ }
1393
1256
  },
1394
1257
  {
1395
- "if": {
1396
- "type": "object",
1397
- "properties": {
1398
- "type": {
1399
- "const": "telegram-message"
1400
- }
1401
- }
1402
- },
1403
- "then": {
1404
- "type": "object",
1405
- "properties": {
1406
- "config": {
1407
- "$ref": "#/definitions/script-task_telegramMessageStepConfig"
1258
+ "additionalProperties": false,
1259
+ "type": "object",
1260
+ "properties": {
1261
+ "names": {
1262
+ "type": "array",
1263
+ "items": {
1264
+ "type": "string"
1408
1265
  }
1266
+ },
1267
+ "type": {
1268
+ "type": "string",
1269
+ "const": "datatruck"
1270
+ },
1271
+ "config": {
1272
+ "type": "object",
1273
+ "properties": {
1274
+ "compress": {
1275
+ "anyOf": [
1276
+ {
1277
+ "type": "object",
1278
+ "properties": {
1279
+ "level": {
1280
+ "type": "number"
1281
+ },
1282
+ "cores": {
1283
+ "anyOf": [
1284
+ {
1285
+ "type": "object",
1286
+ "properties": {
1287
+ "percent": {
1288
+ "type": "number"
1289
+ }
1290
+ },
1291
+ "additionalProperties": false
1292
+ },
1293
+ {
1294
+ "type": "number"
1295
+ }
1296
+ ]
1297
+ }
1298
+ },
1299
+ "additionalProperties": false
1300
+ },
1301
+ {
1302
+ "type": "boolean"
1303
+ }
1304
+ ]
1305
+ },
1306
+ "packs": {
1307
+ "type": "array",
1308
+ "items": {
1309
+ "type": "object",
1310
+ "properties": {
1311
+ "name": {
1312
+ "type": "string"
1313
+ },
1314
+ "compress": {
1315
+ "anyOf": [
1316
+ {
1317
+ "type": "object",
1318
+ "properties": {
1319
+ "level": {
1320
+ "type": "number"
1321
+ },
1322
+ "cores": {
1323
+ "anyOf": [
1324
+ {
1325
+ "type": "object",
1326
+ "properties": {
1327
+ "percent": {
1328
+ "type": "number"
1329
+ }
1330
+ },
1331
+ "additionalProperties": false
1332
+ },
1333
+ {
1334
+ "type": "number"
1335
+ }
1336
+ ]
1337
+ }
1338
+ },
1339
+ "additionalProperties": false
1340
+ },
1341
+ {
1342
+ "type": "boolean"
1343
+ }
1344
+ ]
1345
+ },
1346
+ "include": {
1347
+ "type": "array",
1348
+ "items": {
1349
+ "type": "string"
1350
+ }
1351
+ },
1352
+ "exclude": {
1353
+ "type": "array",
1354
+ "items": {
1355
+ "type": "string"
1356
+ }
1357
+ },
1358
+ "onePackByResult": {
1359
+ "type": "boolean"
1360
+ }
1361
+ },
1362
+ "additionalProperties": false
1363
+ }
1364
+ }
1365
+ },
1366
+ "additionalProperties": false
1409
1367
  }
1410
- },
1411
- "else": false
1368
+ }
1412
1369
  },
1413
1370
  {
1414
- "if": {
1415
- "type": "object",
1416
- "properties": {
1417
- "type": {
1418
- "const": "ntfy"
1419
- }
1420
- }
1421
- },
1422
- "then": {
1423
- "type": "object",
1424
- "properties": {
1425
- "config": {
1426
- "$ref": "#/definitions/script-task_ntfyStepConfig"
1371
+ "additionalProperties": false,
1372
+ "type": "object",
1373
+ "properties": {
1374
+ "names": {
1375
+ "type": "array",
1376
+ "items": {
1377
+ "type": "string"
1427
1378
  }
1379
+ },
1380
+ "type": {
1381
+ "type": "string",
1382
+ "const": "git"
1383
+ },
1384
+ "config": {
1385
+ "type": "object",
1386
+ "properties": {}
1428
1387
  }
1429
- },
1430
- "else": false
1388
+ }
1431
1389
  }
1432
1390
  ]
1433
1391
  },
1434
- "script-task_processStepConfig": {
1435
- "type": "object",
1436
- "required": [
1437
- "command"
1438
- ],
1439
- "properties": {
1440
- "command": {
1441
- "type": "string"
1442
- },
1443
- "env": {
1392
+ "CronAction": {
1393
+ "anyOf": [
1394
+ {
1444
1395
  "type": "object",
1445
- "patternProperties": {
1446
- ".+": {
1447
- "type": "string"
1448
- }
1449
- }
1450
- },
1451
- "args": {
1452
- "$ref": "#/definitions/stringlist-util"
1453
- }
1454
- }
1455
- },
1456
- "script-task_nodeStepConfig": {
1457
- "type": "object",
1458
- "required": [
1459
- "code"
1460
- ],
1461
- "properties": {
1462
- "code": {
1463
- "anyOf": [
1464
- {
1396
+ "properties": {
1397
+ "schedule": {
1465
1398
  "type": "string"
1466
1399
  },
1467
- {
1468
- "$ref": "#/definitions/stringlist-util"
1400
+ "name": {
1401
+ "type": "string",
1402
+ "const": "backup"
1403
+ },
1404
+ "options": {
1405
+ "type": "object",
1406
+ "properties": {
1407
+ "package": {
1408
+ "type": "string"
1409
+ },
1410
+ "packageTask": {
1411
+ "type": "string"
1412
+ },
1413
+ "repository": {
1414
+ "type": "string"
1415
+ },
1416
+ "repositoryType": {
1417
+ "type": "string"
1418
+ },
1419
+ "tag": {
1420
+ "type": "string"
1421
+ },
1422
+ "dryRun": {
1423
+ "type": "boolean"
1424
+ },
1425
+ "date": {
1426
+ "type": "string"
1427
+ },
1428
+ "prune": {
1429
+ "type": "boolean"
1430
+ }
1431
+ },
1432
+ "additionalProperties": false
1469
1433
  }
1470
- ]
1471
- },
1472
- "vars": {
1473
- "type": "object",
1474
- "patternProperties": {
1475
- ".+": {}
1476
- }
1434
+ },
1435
+ "additionalProperties": false
1477
1436
  },
1478
- "env": {
1437
+ {
1479
1438
  "type": "object",
1480
- "patternProperties": {
1481
- ".+": {
1439
+ "properties": {
1440
+ "schedule": {
1482
1441
  "type": "string"
1442
+ },
1443
+ "name": {
1444
+ "type": "string",
1445
+ "const": "copy"
1446
+ },
1447
+ "options": {
1448
+ "type": "object",
1449
+ "properties": {
1450
+ "id": {
1451
+ "type": "string"
1452
+ },
1453
+ "last": {
1454
+ "type": "number"
1455
+ },
1456
+ "package": {
1457
+ "type": "string"
1458
+ },
1459
+ "packageTask": {
1460
+ "type": "string"
1461
+ },
1462
+ "repository": {
1463
+ "type": "string"
1464
+ },
1465
+ "repository2": {
1466
+ "type": "string"
1467
+ }
1468
+ },
1469
+ "additionalProperties": false
1483
1470
  }
1484
- }
1485
- }
1486
- }
1487
- },
1488
- "script-task_telegramMessageStepConfig": {
1489
- "type": "object",
1490
- "required": [
1491
- "bot",
1492
- "chatId"
1493
- ],
1494
- "properties": {
1495
- "command": {
1496
- "type": "string"
1497
- },
1498
- "chatId": {
1499
- "type": "integer"
1500
- },
1501
- "text": {
1502
- "type": "string"
1503
- }
1504
- }
1505
- },
1506
- "script-task_ntfyStepConfig": {
1507
- "type": "object",
1508
- "required": [
1509
- "token"
1510
- ],
1511
- "properties": {
1512
- "token": {
1513
- "type": "string"
1514
- },
1515
- "topic": {
1516
- "type": "string"
1517
- },
1518
- "text": {
1519
- "type": "string"
1471
+ },
1472
+ "additionalProperties": false
1520
1473
  }
1521
- }
1474
+ ]
1522
1475
  }
1523
1476
  },
1524
- "$ref": "#/definitions/config"
1477
+ "$schema": "http://json-schema.org/draft-07/schema#"
1525
1478
  }