@lumy-pack/syncpoint 0.0.8 → 0.0.10
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.
- package/LICENSE +21 -0
- package/README.md +69 -38
- package/assets/schemas/config.schema.json +3 -9
- package/dist/cli.mjs +670 -200
- package/dist/commands/CreateTemplate.d.ts +1 -1
- package/dist/commands/Init.d.ts +1 -1
- package/dist/commands/Provision.d.ts +1 -1
- package/dist/commands/Restore.d.ts +1 -1
- package/dist/components/ProgressBar.d.ts +1 -1
- package/dist/components/StepRunner.d.ts +2 -2
- package/dist/components/Table.d.ts +1 -1
- package/dist/components/Viewer.d.ts +1 -1
- package/dist/errors.d.ts +16 -0
- package/dist/index.cjs +3 -9
- package/dist/index.mjs +3 -9
- package/dist/utils/command-registry.d.ts +1 -0
- package/dist/version.d.ts +1 -1
- package/package.json +4 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-present Vincent K. Kelvin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -73,6 +73,7 @@ The fastest and easiest way to get started. AI automatically generates your conf
|
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
**Tip:** If you don't have Claude Code, use `--print` to get the prompt for any LLM:
|
|
76
|
+
|
|
76
77
|
```bash
|
|
77
78
|
npx @lumy-pack/syncpoint wizard --print
|
|
78
79
|
```
|
|
@@ -100,8 +101,8 @@ If you prefer to manually edit your configuration file, use this approach.
|
|
|
100
101
|
- ~/.gitconfig
|
|
101
102
|
- ~/.ssh/config
|
|
102
103
|
exclude:
|
|
103
|
-
-
|
|
104
|
-
filename:
|
|
104
|
+
- '**/*.swp'
|
|
105
|
+
filename: '{hostname}_{datetime}'
|
|
105
106
|
```
|
|
106
107
|
|
|
107
108
|
3. **Create your first backup**
|
|
@@ -137,6 +138,7 @@ npx @lumy-pack/syncpoint provision my-dev-setup
|
|
|
137
138
|
Initialize the syncpoint directory structure and create default configuration.
|
|
138
139
|
|
|
139
140
|
**What it does:**
|
|
141
|
+
|
|
140
142
|
- Creates `~/.syncpoint/` directory structure
|
|
141
143
|
- Sets up subdirectories: `backups/`, `templates/`, `scripts/`, `logs/`
|
|
142
144
|
- Generates default `config.yml`
|
|
@@ -155,6 +157,7 @@ npx @lumy-pack/syncpoint init
|
|
|
155
157
|
Interactive LLM-powered wizard to generate personalized `config.yml` based on your home directory.
|
|
156
158
|
|
|
157
159
|
**What it does:**
|
|
160
|
+
|
|
158
161
|
1. Scans your home directory for common configuration files
|
|
159
162
|
2. Categorizes files (shell configs, git, SSH, application configs)
|
|
160
163
|
3. Invokes Claude Code to generate customized backup configuration
|
|
@@ -164,8 +167,8 @@ Interactive LLM-powered wizard to generate personalized `config.yml` based on yo
|
|
|
164
167
|
|
|
165
168
|
**Options:**
|
|
166
169
|
|
|
167
|
-
| Option
|
|
168
|
-
|
|
170
|
+
| Option | Description |
|
|
171
|
+
| ------------- | ----------------------------------------------------------------- |
|
|
169
172
|
| `-p, --print` | Print prompt for manual LLM usage instead of invoking Claude Code |
|
|
170
173
|
|
|
171
174
|
**Usage:**
|
|
@@ -179,10 +182,12 @@ npx @lumy-pack/syncpoint wizard --print
|
|
|
179
182
|
```
|
|
180
183
|
|
|
181
184
|
**Requirements:**
|
|
185
|
+
|
|
182
186
|
- Claude Code CLI must be installed for default mode
|
|
183
187
|
- Use `--print` mode if Claude Code is not available
|
|
184
188
|
|
|
185
189
|
**Validation:**
|
|
190
|
+
|
|
186
191
|
- Automatic AJV schema validation
|
|
187
192
|
- Retry loop with error feedback to LLM
|
|
188
193
|
- Session resume preserves conversation context
|
|
@@ -194,6 +199,7 @@ npx @lumy-pack/syncpoint wizard --print
|
|
|
194
199
|
Interactive LLM-powered wizard to create custom provisioning templates.
|
|
195
200
|
|
|
196
201
|
**What it does:**
|
|
202
|
+
|
|
197
203
|
1. Guides you through defining provisioning requirements
|
|
198
204
|
2. Invokes Claude Code to generate template YAML
|
|
199
205
|
3. Validates template structure with automatic retry (max 3 attempts)
|
|
@@ -202,8 +208,8 @@ Interactive LLM-powered wizard to create custom provisioning templates.
|
|
|
202
208
|
|
|
203
209
|
**Options:**
|
|
204
210
|
|
|
205
|
-
| Option
|
|
206
|
-
|
|
211
|
+
| Option | Description |
|
|
212
|
+
| ------------- | ----------------------------------------------------------------- |
|
|
207
213
|
| `-p, --print` | Print prompt for manual LLM usage instead of invoking Claude Code |
|
|
208
214
|
|
|
209
215
|
**Usage:**
|
|
@@ -220,6 +226,7 @@ npx @lumy-pack/syncpoint create-template --print
|
|
|
220
226
|
```
|
|
221
227
|
|
|
222
228
|
**Template Fields:**
|
|
229
|
+
|
|
223
230
|
- `name` (required) — Template name
|
|
224
231
|
- `description` (optional) — Template description
|
|
225
232
|
- `steps` (required) — Array of provisioning steps
|
|
@@ -227,6 +234,7 @@ npx @lumy-pack/syncpoint create-template --print
|
|
|
227
234
|
- `sudo` (optional) — Whether sudo privilege is required
|
|
228
235
|
|
|
229
236
|
**Step Fields:**
|
|
237
|
+
|
|
230
238
|
- `name` (required) — Step name
|
|
231
239
|
- `command` (required) — Shell command to execute
|
|
232
240
|
- `description` (optional) — Step description
|
|
@@ -240,6 +248,7 @@ npx @lumy-pack/syncpoint create-template --print
|
|
|
240
248
|
Create a compressed backup archive of your configuration files.
|
|
241
249
|
|
|
242
250
|
**What it does:**
|
|
251
|
+
|
|
243
252
|
1. Scans configured target files and directories
|
|
244
253
|
2. Applies glob patterns and exclusions
|
|
245
254
|
3. Warns about large files (>10MB) and sensitive files (SSH keys, certificates)
|
|
@@ -249,10 +258,10 @@ Create a compressed backup archive of your configuration files.
|
|
|
249
258
|
|
|
250
259
|
**Options:**
|
|
251
260
|
|
|
252
|
-
| Option
|
|
253
|
-
|
|
254
|
-
| `--dry-run`
|
|
255
|
-
| `--tag <name>` | Add custom tag to backup filename
|
|
261
|
+
| Option | Description |
|
|
262
|
+
| -------------- | ------------------------------------------------------ |
|
|
263
|
+
| `--dry-run` | Preview files to be backed up without creating archive |
|
|
264
|
+
| `--tag <name>` | Add custom tag to backup filename |
|
|
256
265
|
|
|
257
266
|
**Usage:**
|
|
258
267
|
|
|
@@ -278,6 +287,7 @@ Backups are saved to `~/.syncpoint/backups/` (or custom destination) with filena
|
|
|
278
287
|
Restore configuration files from a backup archive.
|
|
279
288
|
|
|
280
289
|
**What it does:**
|
|
290
|
+
|
|
281
291
|
1. Lists available backups (if no filename provided)
|
|
282
292
|
2. Generates restore plan by comparing file hashes:
|
|
283
293
|
- `create` — File doesn't exist locally
|
|
@@ -289,8 +299,8 @@ Restore configuration files from a backup archive.
|
|
|
289
299
|
|
|
290
300
|
**Options:**
|
|
291
301
|
|
|
292
|
-
| Option
|
|
293
|
-
|
|
302
|
+
| Option | Description |
|
|
303
|
+
| ----------- | -------------------------------------------- |
|
|
294
304
|
| `--dry-run` | Show restore plan without actually restoring |
|
|
295
305
|
|
|
296
306
|
**Usage:**
|
|
@@ -307,6 +317,7 @@ npx @lumy-pack/syncpoint restore --dry-run
|
|
|
307
317
|
```
|
|
308
318
|
|
|
309
319
|
**Safety Features:**
|
|
320
|
+
|
|
310
321
|
- Automatic safety backup before any file is overwritten
|
|
311
322
|
- Hash-based comparison to skip identical files
|
|
312
323
|
- Symlink validation to prevent directory traversal attacks
|
|
@@ -318,6 +329,7 @@ npx @lumy-pack/syncpoint restore --dry-run
|
|
|
318
329
|
Run template-based machine provisioning to install software and configure your system.
|
|
319
330
|
|
|
320
331
|
**What it does:**
|
|
332
|
+
|
|
321
333
|
1. Loads template YAML from `~/.syncpoint/templates/` (by name) or from a custom path (with `--file`)
|
|
322
334
|
2. Validates template structure and security
|
|
323
335
|
3. Checks for sudo requirement (prompts if needed)
|
|
@@ -328,11 +340,11 @@ Run template-based machine provisioning to install software and configure your s
|
|
|
328
340
|
|
|
329
341
|
**Options:**
|
|
330
342
|
|
|
331
|
-
| Option
|
|
332
|
-
|
|
343
|
+
| Option | Description |
|
|
344
|
+
| ------------------- | ---------------------------------------------------- |
|
|
333
345
|
| `-f, --file <path>` | Path to template file (alternative to template name) |
|
|
334
|
-
| `--dry-run`
|
|
335
|
-
| `--skip-restore`
|
|
346
|
+
| `--dry-run` | Show execution plan without running commands |
|
|
347
|
+
| `--skip-restore` | Skip automatic config restore after provisioning |
|
|
336
348
|
|
|
337
349
|
**Usage:**
|
|
338
350
|
|
|
@@ -357,12 +369,14 @@ npx @lumy-pack/syncpoint provision -f ./template.yml --dry-run --skip-restore
|
|
|
357
369
|
```
|
|
358
370
|
|
|
359
371
|
**Path Resolution:**
|
|
372
|
+
|
|
360
373
|
- Supports absolute paths: `/path/to/template.yml`
|
|
361
374
|
- Supports relative paths: `./template.yml`, `../templates/setup.yaml`
|
|
362
375
|
- Supports tilde expansion: `~/templates/custom.yml`
|
|
363
376
|
- Must have `.yml` or `.yaml` extension
|
|
364
377
|
|
|
365
378
|
**Security:**
|
|
379
|
+
|
|
366
380
|
- Blocks dangerous remote script patterns (`curl | bash`, `wget | sh`)
|
|
367
381
|
- Sanitizes error output to mask sensitive paths and credentials
|
|
368
382
|
- Validates all templates against schema
|
|
@@ -375,6 +389,7 @@ npx @lumy-pack/syncpoint provision -f ./template.yml --dry-run --skip-restore
|
|
|
375
389
|
Browse and manage backups and templates interactively.
|
|
376
390
|
|
|
377
391
|
**What it does:**
|
|
392
|
+
|
|
378
393
|
- Displays interactive menu to browse backups or templates
|
|
379
394
|
- Shows detailed metadata (size, date, file count, description)
|
|
380
395
|
- Allows safe deletion of backups with confirmation
|
|
@@ -392,6 +407,7 @@ npx @lumy-pack/syncpoint list templates
|
|
|
392
407
|
```
|
|
393
408
|
|
|
394
409
|
**Navigation:**
|
|
410
|
+
|
|
395
411
|
- Use arrow keys to select items
|
|
396
412
|
- Press Enter to view details
|
|
397
413
|
- Press ESC to go back
|
|
@@ -404,6 +420,7 @@ npx @lumy-pack/syncpoint list templates
|
|
|
404
420
|
Show status summary and manage cleanup of `~/.syncpoint/` directory.
|
|
405
421
|
|
|
406
422
|
**What it does:**
|
|
423
|
+
|
|
407
424
|
- Scans all subdirectories and calculates statistics
|
|
408
425
|
- Displays file counts and total sizes
|
|
409
426
|
- Shows backup timeline (newest and oldest)
|
|
@@ -411,8 +428,8 @@ Show status summary and manage cleanup of `~/.syncpoint/` directory.
|
|
|
411
428
|
|
|
412
429
|
**Options:**
|
|
413
430
|
|
|
414
|
-
| Option
|
|
415
|
-
|
|
431
|
+
| Option | Description |
|
|
432
|
+
| ----------- | ------------------------------ |
|
|
416
433
|
| `--cleanup` | Enter interactive cleanup mode |
|
|
417
434
|
|
|
418
435
|
**Usage:**
|
|
@@ -426,6 +443,7 @@ npx @lumy-pack/syncpoint status --cleanup
|
|
|
426
443
|
```
|
|
427
444
|
|
|
428
445
|
**Cleanup Strategies:**
|
|
446
|
+
|
|
429
447
|
- Keep only 5 most recent backups
|
|
430
448
|
- Remove backups older than 30 days
|
|
431
449
|
- Delete all log files
|
|
@@ -457,14 +475,14 @@ backup:
|
|
|
457
475
|
# (Required) Patterns to exclude from backup
|
|
458
476
|
# Supports glob and regex patterns
|
|
459
477
|
exclude:
|
|
460
|
-
-
|
|
461
|
-
-
|
|
462
|
-
-
|
|
478
|
+
- '**/*.swp'
|
|
479
|
+
- '**/.DS_Store'
|
|
480
|
+
- '**/node_modules'
|
|
463
481
|
# Example regex: "/\\.bak$/" excludes all .bak files
|
|
464
482
|
|
|
465
483
|
# (Required) Backup filename pattern
|
|
466
484
|
# Available placeholders: {hostname}, {date}, {time}, {datetime}, {tag}
|
|
467
|
-
filename:
|
|
485
|
+
filename: '{hostname}_{datetime}'
|
|
468
486
|
|
|
469
487
|
# (Optional) Custom backup destination
|
|
470
488
|
# Default: ~/.syncpoint/backups/
|
|
@@ -478,13 +496,13 @@ scripts:
|
|
|
478
496
|
|
|
479
497
|
### Filename Placeholders
|
|
480
498
|
|
|
481
|
-
| Placeholder
|
|
482
|
-
|
|
483
|
-
| `{hostname}` | `macbook-pro`
|
|
484
|
-
| `{date}`
|
|
485
|
-
| `{time}`
|
|
486
|
-
| `{datetime}` | `2024-01-15_14-30-00` | Combined date and time
|
|
487
|
-
| `{tag}`
|
|
499
|
+
| Placeholder | Example | Description |
|
|
500
|
+
| ------------ | --------------------- | ------------------------------ |
|
|
501
|
+
| `{hostname}` | `macbook-pro` | System hostname |
|
|
502
|
+
| `{date}` | `2024-01-15` | Current date (YYYY-MM-DD) |
|
|
503
|
+
| `{time}` | `14-30-00` | Current time (HH-MM-SS) |
|
|
504
|
+
| `{datetime}` | `2024-01-15_14-30-00` | Combined date and time |
|
|
505
|
+
| `{tag}` | `before-upgrade` | Custom tag from `--tag` option |
|
|
488
506
|
|
|
489
507
|
### Pattern Types
|
|
490
508
|
|
|
@@ -495,6 +513,7 @@ Syncpoint supports three types of patterns for `targets` and `exclude` fields:
|
|
|
495
513
|
Direct file or directory paths. Tilde (`~`) is automatically expanded to home directory.
|
|
496
514
|
|
|
497
515
|
**Examples:**
|
|
516
|
+
|
|
498
517
|
- `~/.zshrc` — Specific file in home directory
|
|
499
518
|
- `/etc/hosts` — Absolute path
|
|
500
519
|
- `~/.ssh/config` — Nested file
|
|
@@ -504,6 +523,7 @@ Direct file or directory paths. Tilde (`~`) is automatically expanded to home di
|
|
|
504
523
|
Wildcard patterns for matching multiple files. Uses standard glob syntax.
|
|
505
524
|
|
|
506
525
|
**Examples:**
|
|
526
|
+
|
|
507
527
|
- `*.conf` — All .conf files in current directory
|
|
508
528
|
- `~/.config/*.yml` — All .yml files in ~/.config/
|
|
509
529
|
- `**/*.toml` — All .toml files recursively
|
|
@@ -518,17 +538,20 @@ Regular expressions for advanced pattern matching. Must be enclosed in forward s
|
|
|
518
538
|
**Format:** `/pattern/` (e.g., `/\.conf$/`)
|
|
519
539
|
|
|
520
540
|
**Examples:**
|
|
541
|
+
|
|
521
542
|
- `/\.conf$/` — Files ending with .conf
|
|
522
543
|
- `/\.toml$/` — Files ending with .toml
|
|
523
544
|
- `/\.(bak|tmp)$/` — Files ending with .bak or .tmp
|
|
524
545
|
- `/^\.config\//` — Files starting with .config/
|
|
525
546
|
|
|
526
547
|
**Limitations:**
|
|
548
|
+
|
|
527
549
|
- Regex targets scan home directory (`~/`) only
|
|
528
550
|
- Maximum depth: 5 levels for performance
|
|
529
551
|
- No unescaped forward slashes in pattern body
|
|
530
552
|
|
|
531
553
|
**When to use regex:**
|
|
554
|
+
|
|
532
555
|
- Complex extension matching: `/\.(conf|toml|yaml)$/`
|
|
533
556
|
- Pattern-based exclusions: `/\.(bak|tmp|cache)$/`
|
|
534
557
|
- Path prefix/suffix matching
|
|
@@ -547,12 +570,12 @@ backup:
|
|
|
547
570
|
- ~/Documents/notes
|
|
548
571
|
|
|
549
572
|
exclude:
|
|
550
|
-
-
|
|
551
|
-
-
|
|
552
|
-
-
|
|
553
|
-
-
|
|
573
|
+
- '**/*.swp'
|
|
574
|
+
- '**/*.tmp'
|
|
575
|
+
- '**/.DS_Store'
|
|
576
|
+
- '**/*cache*'
|
|
554
577
|
|
|
555
|
-
filename:
|
|
578
|
+
filename: '{hostname}_{date}_{tag}'
|
|
556
579
|
destination: ~/Dropbox/backups
|
|
557
580
|
|
|
558
581
|
scripts:
|
|
@@ -582,10 +605,10 @@ sudo: boolean
|
|
|
582
605
|
|
|
583
606
|
# (Required) List of provisioning steps
|
|
584
607
|
steps:
|
|
585
|
-
- name: string
|
|
586
|
-
description: string
|
|
587
|
-
command: string
|
|
588
|
-
skip_if: string
|
|
608
|
+
- name: string # (Required) Step name
|
|
609
|
+
description: string # (Optional) Step description
|
|
610
|
+
command: string # (Required) Shell command to execute
|
|
611
|
+
skip_if: string # (Optional) Skip if this command succeeds
|
|
589
612
|
continue_on_error: boolean # (Optional) Continue on failure (default: false)
|
|
590
613
|
```
|
|
591
614
|
|
|
@@ -671,6 +694,7 @@ After initialization, syncpoint creates the following structure:
|
|
|
671
694
|
### Backup Archive Contents
|
|
672
695
|
|
|
673
696
|
Each backup archive contains:
|
|
697
|
+
|
|
674
698
|
- Your configuration files in their relative paths
|
|
675
699
|
- `_metadata.json` with backup information:
|
|
676
700
|
- File hashes for comparison
|
|
@@ -810,6 +834,7 @@ Syncpoint includes multiple security layers to protect your data and system:
|
|
|
810
834
|
**Claude Code CLI not found**
|
|
811
835
|
|
|
812
836
|
If you see "Claude Code CLI not found" error:
|
|
837
|
+
|
|
813
838
|
1. Install Claude Code CLI: Visit [claude.ai/code](https://claude.ai/code) for installation instructions
|
|
814
839
|
2. Or use `--print` mode to get the prompt and use it with your preferred LLM
|
|
815
840
|
3. Verify installation: `claude --version`
|
|
@@ -817,6 +842,7 @@ If you see "Claude Code CLI not found" error:
|
|
|
817
842
|
**Validation errors after LLM generation**
|
|
818
843
|
|
|
819
844
|
The wizard automatically retries up to 3 times when validation fails:
|
|
845
|
+
|
|
820
846
|
- Each retry includes error feedback to help the LLM correct the issues
|
|
821
847
|
- If all retries fail, check the validation error messages
|
|
822
848
|
- Common issues:
|
|
@@ -827,6 +853,7 @@ The wizard automatically retries up to 3 times when validation fails:
|
|
|
827
853
|
**Print mode usage**
|
|
828
854
|
|
|
829
855
|
Use `--print` mode when Claude Code is not available:
|
|
856
|
+
|
|
830
857
|
```bash
|
|
831
858
|
# Get the prompt
|
|
832
859
|
npx @lumy-pack/syncpoint wizard --print > prompt.txt
|
|
@@ -838,6 +865,7 @@ npx @lumy-pack/syncpoint wizard --print > prompt.txt
|
|
|
838
865
|
**Session context lost**
|
|
839
866
|
|
|
840
867
|
The wizard preserves session context across retries using Claude Code's session management. If context is lost:
|
|
868
|
+
|
|
841
869
|
- The wizard will start a new session on the next retry
|
|
842
870
|
- Manual intervention may be needed after 3 failed attempts
|
|
843
871
|
|
|
@@ -846,6 +874,7 @@ The wizard preserves session context across retries using Claude Code's session
|
|
|
846
874
|
**Permission errors**
|
|
847
875
|
|
|
848
876
|
If you encounter permission errors:
|
|
877
|
+
|
|
849
878
|
- Ensure you have write access to `~/.syncpoint/`
|
|
850
879
|
- Check file permissions: `ls -la ~/.syncpoint/`
|
|
851
880
|
- Run with appropriate permissions (avoid unnecessary sudo)
|
|
@@ -853,6 +882,7 @@ If you encounter permission errors:
|
|
|
853
882
|
**Large file warnings**
|
|
854
883
|
|
|
855
884
|
Files larger than 10MB trigger warnings:
|
|
885
|
+
|
|
856
886
|
- Consider excluding large files using `exclude` patterns
|
|
857
887
|
- Review if these files should be in version control instead
|
|
858
888
|
- Compress large files before backing up
|
|
@@ -860,6 +890,7 @@ Files larger than 10MB trigger warnings:
|
|
|
860
890
|
**Backup restore conflicts**
|
|
861
891
|
|
|
862
892
|
If restore shows many "overwrite" actions:
|
|
893
|
+
|
|
863
894
|
- Use `--dry-run` to preview changes first
|
|
864
895
|
- Automatic safety backup is created before overwrite
|
|
865
896
|
- Review the safety backup in `~/.syncpoint/backups/` tagged with `_pre-restore_`
|
|
@@ -3,18 +3,12 @@
|
|
|
3
3
|
"title": "Syncpoint Config",
|
|
4
4
|
"description": "Configuration for syncpoint backup tool",
|
|
5
5
|
"type": "object",
|
|
6
|
-
"required": [
|
|
7
|
-
"backup"
|
|
8
|
-
],
|
|
6
|
+
"required": ["backup"],
|
|
9
7
|
"properties": {
|
|
10
8
|
"backup": {
|
|
11
9
|
"type": "object",
|
|
12
10
|
"description": "Backup configuration",
|
|
13
|
-
"required": [
|
|
14
|
-
"targets",
|
|
15
|
-
"exclude",
|
|
16
|
-
"filename"
|
|
17
|
-
],
|
|
11
|
+
"required": ["targets", "exclude", "filename"],
|
|
18
12
|
"properties": {
|
|
19
13
|
"targets": {
|
|
20
14
|
"type": "array",
|
|
@@ -65,4 +59,4 @@
|
|
|
65
59
|
}
|
|
66
60
|
},
|
|
67
61
|
"additionalProperties": false
|
|
68
|
-
}
|
|
62
|
+
}
|