@loopress/cli 0.17.0 → 0.19.0

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.
Files changed (68) hide show
  1. package/README.md +266 -59
  2. package/dist/commands/acf/pull.d.ts +1 -1
  3. package/dist/commands/acf/pull.js +12 -25
  4. package/dist/commands/acf/push.d.ts +1 -1
  5. package/dist/commands/acf/push.js +18 -47
  6. package/dist/commands/api/list.d.ts +9 -0
  7. package/dist/commands/api/list.js +26 -0
  8. package/dist/commands/api/pull.d.ts +13 -0
  9. package/dist/commands/api/pull.js +49 -0
  10. package/dist/commands/api/push.d.ts +15 -0
  11. package/dist/commands/api/push.js +70 -0
  12. package/dist/commands/composer/init.js +11 -1
  13. package/dist/commands/composer/push.d.ts +1 -0
  14. package/dist/commands/composer/push.js +17 -4
  15. package/dist/commands/doctor.d.ts +8 -0
  16. package/dist/commands/doctor.js +79 -0
  17. package/dist/commands/form/list.d.ts +9 -0
  18. package/dist/commands/form/list.js +26 -0
  19. package/dist/commands/form/pull.d.ts +13 -0
  20. package/dist/commands/form/pull.js +60 -0
  21. package/dist/commands/form/push.d.ts +16 -0
  22. package/dist/commands/form/push.js +122 -0
  23. package/dist/commands/init.d.ts +2 -0
  24. package/dist/commands/init.js +64 -33
  25. package/dist/commands/plugin/push.d.ts +1 -1
  26. package/dist/commands/plugin/push.js +2 -14
  27. package/dist/commands/project/config.js +4 -0
  28. package/dist/commands/project/push.d.ts +5 -0
  29. package/dist/commands/project/push.js +21 -11
  30. package/dist/commands/seo/pull.d.ts +1 -3
  31. package/dist/commands/seo/pull.js +15 -43
  32. package/dist/commands/seo/push.d.ts +1 -1
  33. package/dist/commands/seo/push.js +4 -17
  34. package/dist/commands/snippet/publish.js +2 -2
  35. package/dist/commands/snippet/pull.d.ts +1 -4
  36. package/dist/commands/snippet/pull.js +12 -60
  37. package/dist/commands/snippet/push.d.ts +1 -1
  38. package/dist/commands/snippet/push.js +4 -13
  39. package/dist/commands/status.d.ts +4 -0
  40. package/dist/commands/status.js +25 -4
  41. package/dist/config/project-config.manager.js +2 -2
  42. package/dist/lib/api-client.d.ts +2 -1
  43. package/dist/lib/api-client.js +10 -3
  44. package/dist/lib/base.d.ts +11 -0
  45. package/dist/lib/base.js +71 -2
  46. package/dist/lib/find-orphaned-files.d.ts +7 -0
  47. package/dist/lib/find-orphaned-files.js +29 -0
  48. package/dist/lib/interactive.d.ts +1 -0
  49. package/dist/lib/interactive.js +7 -0
  50. package/dist/lib/load-files.d.ts +5 -0
  51. package/dist/lib/load-files.js +31 -0
  52. package/dist/lib/push-command.d.ts +7 -0
  53. package/dist/lib/push-command.js +40 -2
  54. package/dist/lib/wp-client.d.ts +9 -4
  55. package/dist/lib/wp-client.js +26 -12
  56. package/dist/types/project-config.generated.d.ts +8 -0
  57. package/dist/utils/composer.d.ts +3 -0
  58. package/dist/utils/form-format.d.ts +3 -0
  59. package/dist/utils/form-format.js +17 -0
  60. package/dist/utils/seo-format.d.ts +1 -0
  61. package/dist/utils/seo-format.js +5 -0
  62. package/dist/utils/snippet-format.d.ts +2 -0
  63. package/dist/utils/snippet-format.js +27 -1
  64. package/dist/utils/to-slug.d.ts +1 -0
  65. package/dist/utils/to-slug.js +7 -0
  66. package/oclif.manifest.json +748 -96
  67. package/package.json +26 -17
  68. package/schemas/project-config.schema.json +10 -0
@@ -1,5 +1,53 @@
1
1
  {
2
2
  "commands": {
3
+ "doctor": {
4
+ "aliases": [],
5
+ "args": {},
6
+ "description": "Diagnose connectivity, plugin and credential problems for the targeted environment",
7
+ "examples": [
8
+ "$ lps doctor",
9
+ "$ lps doctor --env production"
10
+ ],
11
+ "flags": {
12
+ "env": {
13
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
14
+ "name": "env",
15
+ "hasDynamicHelp": false,
16
+ "multiple": false,
17
+ "type": "option"
18
+ }
19
+ },
20
+ "hasDynamicHelp": false,
21
+ "hiddenAliases": [],
22
+ "id": "doctor",
23
+ "pluginAlias": "@loopress/cli",
24
+ "pluginName": "@loopress/cli",
25
+ "pluginType": "core",
26
+ "strict": true,
27
+ "enableJsonFlag": false,
28
+ "dryRunFlag": {
29
+ "dry-run": {
30
+ "char": "d",
31
+ "description": "Show what would change without making changes",
32
+ "allowNo": false,
33
+ "type": "boolean"
34
+ }
35
+ },
36
+ "yesFlag": {
37
+ "yes": {
38
+ "char": "y",
39
+ "description": "Answer yes to confirmation prompts",
40
+ "allowNo": false,
41
+ "type": "boolean"
42
+ }
43
+ },
44
+ "isESM": true,
45
+ "relativePath": [
46
+ "dist",
47
+ "commands",
48
+ "doctor.js"
49
+ ]
50
+ },
3
51
  "init": {
4
52
  "aliases": [],
5
53
  "args": {},
@@ -95,9 +143,18 @@
95
143
  "args": {},
96
144
  "description": "Show which WordPress project and environment commands will target",
97
145
  "examples": [
98
- "$ lps status"
146
+ "$ lps status",
147
+ "$ lps status --env staging"
99
148
  ],
100
- "flags": {},
149
+ "flags": {
150
+ "env": {
151
+ "description": "Show what would be targeted with this environment, as other commands do with --env",
152
+ "name": "env",
153
+ "hasDynamicHelp": false,
154
+ "multiple": false,
155
+ "type": "option"
156
+ }
157
+ },
101
158
  "hasDynamicHelp": false,
102
159
  "hiddenAliases": [],
103
160
  "id": "status",
@@ -122,6 +179,13 @@
122
179
  "$ lps acf list --type field-groups"
123
180
  ],
124
181
  "flags": {
182
+ "env": {
183
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
184
+ "name": "env",
185
+ "hasDynamicHelp": false,
186
+ "multiple": false,
187
+ "type": "option"
188
+ },
125
189
  "json": {
126
190
  "char": "j",
127
191
  "description": "Output in JSON format",
@@ -159,6 +223,14 @@
159
223
  "type": "boolean"
160
224
  }
161
225
  },
226
+ "yesFlag": {
227
+ "yes": {
228
+ "char": "y",
229
+ "description": "Answer yes to confirmation prompts",
230
+ "allowNo": false,
231
+ "type": "boolean"
232
+ }
233
+ },
162
234
  "isESM": true,
163
235
  "relativePath": [
164
236
  "dist",
@@ -181,6 +253,13 @@
181
253
  "$ lps acf pull --type field-groups"
182
254
  ],
183
255
  "flags": {
256
+ "env": {
257
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
258
+ "name": "env",
259
+ "hasDynamicHelp": false,
260
+ "multiple": false,
261
+ "type": "option"
262
+ },
184
263
  "dry-run": {
185
264
  "char": "d",
186
265
  "description": "Show what would change without making changes",
@@ -188,6 +267,13 @@
188
267
  "allowNo": false,
189
268
  "type": "boolean"
190
269
  },
270
+ "yes": {
271
+ "char": "y",
272
+ "description": "Answer yes to confirmation prompts",
273
+ "name": "yes",
274
+ "allowNo": false,
275
+ "type": "boolean"
276
+ },
191
277
  "type": {
192
278
  "description": "Limit to specific ACF object types",
193
279
  "name": "type",
@@ -218,6 +304,14 @@
218
304
  "type": "boolean"
219
305
  }
220
306
  },
307
+ "yesFlag": {
308
+ "yes": {
309
+ "char": "y",
310
+ "description": "Answer yes to confirmation prompts",
311
+ "allowNo": false,
312
+ "type": "boolean"
313
+ }
314
+ },
221
315
  "isESM": true,
222
316
  "relativePath": [
223
317
  "dist",
@@ -240,6 +334,13 @@
240
334
  "$ lps acf push --type field-groups"
241
335
  ],
242
336
  "flags": {
337
+ "env": {
338
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
339
+ "name": "env",
340
+ "hasDynamicHelp": false,
341
+ "multiple": false,
342
+ "type": "option"
343
+ },
243
344
  "dry-run": {
244
345
  "char": "d",
245
346
  "description": "Show what would change without making changes",
@@ -247,6 +348,13 @@
247
348
  "allowNo": false,
248
349
  "type": "boolean"
249
350
  },
351
+ "yes": {
352
+ "char": "y",
353
+ "description": "Answer yes to confirmation prompts",
354
+ "name": "yes",
355
+ "allowNo": false,
356
+ "type": "boolean"
357
+ },
250
358
  "type": {
251
359
  "description": "Limit to specific ACF object types",
252
360
  "name": "type",
@@ -276,26 +384,32 @@
276
384
  "push.js"
277
385
  ]
278
386
  },
279
- "composer:init": {
387
+ "api:list": {
280
388
  "aliases": [],
281
389
  "args": {},
282
- "description": "Create a composer.json wired to WPackagist for installing WordPress.org plugins and themes",
390
+ "description": "List custom API route files from WordPress",
283
391
  "examples": [
284
- "$ lps composer init",
285
- "$ lps composer init --dry-run"
392
+ "$ lps api list"
286
393
  ],
287
394
  "flags": {
288
- "dry-run": {
289
- "char": "d",
290
- "description": "Show what would change without making changes",
291
- "name": "dry-run",
395
+ "env": {
396
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
397
+ "name": "env",
398
+ "hasDynamicHelp": false,
399
+ "multiple": false,
400
+ "type": "option"
401
+ },
402
+ "json": {
403
+ "char": "j",
404
+ "description": "Output in JSON format",
405
+ "name": "json",
292
406
  "allowNo": false,
293
407
  "type": "boolean"
294
408
  }
295
409
  },
296
410
  "hasDynamicHelp": false,
297
411
  "hiddenAliases": [],
298
- "id": "composer:init",
412
+ "id": "api:list",
299
413
  "pluginAlias": "@loopress/cli",
300
414
  "pluginName": "@loopress/cli",
301
415
  "pluginType": "core",
@@ -309,34 +423,61 @@
309
423
  "type": "boolean"
310
424
  }
311
425
  },
426
+ "yesFlag": {
427
+ "yes": {
428
+ "char": "y",
429
+ "description": "Answer yes to confirmation prompts",
430
+ "allowNo": false,
431
+ "type": "boolean"
432
+ }
433
+ },
312
434
  "isESM": true,
313
435
  "relativePath": [
314
436
  "dist",
315
437
  "commands",
316
- "composer",
317
- "init.js"
438
+ "api",
439
+ "list.js"
318
440
  ]
319
441
  },
320
- "composer:pull": {
442
+ "api:pull": {
321
443
  "aliases": [],
322
- "args": {},
323
- "description": "Pull composer.json and composer.lock from WordPress",
444
+ "args": {
445
+ "path": {
446
+ "description": "Path to api directory (overrides project config)",
447
+ "name": "path"
448
+ }
449
+ },
450
+ "description": "Pull custom API route files from WordPress",
324
451
  "examples": [
325
- "$ lps composer pull",
326
- "$ lps composer pull --dry-run"
452
+ "$ lps api pull",
453
+ "$ lps api pull --path ./api"
327
454
  ],
328
455
  "flags": {
456
+ "env": {
457
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
458
+ "name": "env",
459
+ "hasDynamicHelp": false,
460
+ "multiple": false,
461
+ "type": "option"
462
+ },
329
463
  "dry-run": {
330
464
  "char": "d",
331
465
  "description": "Show what would change without making changes",
332
466
  "name": "dry-run",
333
467
  "allowNo": false,
334
468
  "type": "boolean"
469
+ },
470
+ "yes": {
471
+ "char": "y",
472
+ "description": "Answer yes to confirmation prompts",
473
+ "name": "yes",
474
+ "allowNo": false,
475
+ "type": "boolean"
335
476
  }
336
477
  },
337
478
  "hasDynamicHelp": false,
338
479
  "hiddenAliases": [],
339
- "id": "composer:pull",
480
+ "id": "api:pull",
340
481
  "pluginAlias": "@loopress/cli",
341
482
  "pluginName": "@loopress/cli",
342
483
  "pluginType": "core",
@@ -350,34 +491,61 @@
350
491
  "type": "boolean"
351
492
  }
352
493
  },
494
+ "yesFlag": {
495
+ "yes": {
496
+ "char": "y",
497
+ "description": "Answer yes to confirmation prompts",
498
+ "allowNo": false,
499
+ "type": "boolean"
500
+ }
501
+ },
353
502
  "isESM": true,
354
503
  "relativePath": [
355
504
  "dist",
356
505
  "commands",
357
- "composer",
506
+ "api",
358
507
  "pull.js"
359
508
  ]
360
509
  },
361
- "composer:push": {
510
+ "api:push": {
362
511
  "aliases": [],
363
- "args": {},
364
- "description": "Push composer.json and composer.lock to WordPress and run composer install",
512
+ "args": {
513
+ "path": {
514
+ "description": "Path to api directory (overrides project config)",
515
+ "name": "path"
516
+ }
517
+ },
518
+ "description": "Push custom API route files to WordPress",
365
519
  "examples": [
366
- "$ lps composer push",
367
- "$ lps composer push --dry-run"
520
+ "$ lps api push",
521
+ "$ lps api push --path ./api"
368
522
  ],
369
523
  "flags": {
524
+ "env": {
525
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
526
+ "name": "env",
527
+ "hasDynamicHelp": false,
528
+ "multiple": false,
529
+ "type": "option"
530
+ },
370
531
  "dry-run": {
371
532
  "char": "d",
372
533
  "description": "Show what would change without making changes",
373
534
  "name": "dry-run",
374
535
  "allowNo": false,
375
536
  "type": "boolean"
537
+ },
538
+ "yes": {
539
+ "char": "y",
540
+ "description": "Answer yes to confirmation prompts",
541
+ "name": "yes",
542
+ "allowNo": false,
543
+ "type": "boolean"
376
544
  }
377
545
  },
378
546
  "hasDynamicHelp": false,
379
547
  "hiddenAliases": [],
380
- "id": "composer:push",
548
+ "id": "api:push",
381
549
  "pluginAlias": "@loopress/cli",
382
550
  "pluginName": "@loopress/cli",
383
551
  "pluginType": "core",
@@ -386,25 +554,26 @@
386
554
  "relativePath": [
387
555
  "dist",
388
556
  "commands",
389
- "composer",
557
+ "api",
390
558
  "push.js"
391
559
  ]
392
560
  },
393
- "plugin:add": {
561
+ "composer:init": {
394
562
  "aliases": [],
395
- "args": {
396
- "slug": {
397
- "description": "Plugin slug on WordPress.org",
398
- "name": "slug",
399
- "required": true
400
- }
401
- },
402
- "description": "Add a WordPress.org plugin to loopress.json",
563
+ "args": {},
564
+ "description": "Create a composer.json wired to WPackagist for installing WordPress.org plugins and themes",
403
565
  "examples": [
404
- "$ lps plugin add woocommerce",
405
- "$ lps plugin add contact-form-7 --dry-run"
566
+ "$ lps composer init",
567
+ "$ lps composer init --dry-run"
406
568
  ],
407
569
  "flags": {
570
+ "env": {
571
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
572
+ "name": "env",
573
+ "hasDynamicHelp": false,
574
+ "multiple": false,
575
+ "type": "option"
576
+ },
408
577
  "dry-run": {
409
578
  "char": "d",
410
579
  "description": "Show what would change without making changes",
@@ -415,7 +584,7 @@
415
584
  },
416
585
  "hasDynamicHelp": false,
417
586
  "hiddenAliases": [],
418
- "id": "plugin:add",
587
+ "id": "composer:init",
419
588
  "pluginAlias": "@loopress/cli",
420
589
  "pluginName": "@loopress/cli",
421
590
  "pluginType": "core",
@@ -429,23 +598,38 @@
429
598
  "type": "boolean"
430
599
  }
431
600
  },
601
+ "yesFlag": {
602
+ "yes": {
603
+ "char": "y",
604
+ "description": "Answer yes to confirmation prompts",
605
+ "allowNo": false,
606
+ "type": "boolean"
607
+ }
608
+ },
432
609
  "isESM": true,
433
610
  "relativePath": [
434
611
  "dist",
435
612
  "commands",
436
- "plugin",
437
- "add.js"
613
+ "composer",
614
+ "init.js"
438
615
  ]
439
616
  },
440
- "plugin:pull": {
617
+ "composer:pull": {
441
618
  "aliases": [],
442
619
  "args": {},
443
- "description": "Pull installed plugins from WordPress into loopress.json",
620
+ "description": "Pull composer.json and composer.lock from WordPress",
444
621
  "examples": [
445
- "$ lps plugin pull",
446
- "$ lps plugin pull --dry-run"
622
+ "$ lps composer pull",
623
+ "$ lps composer pull --dry-run"
447
624
  ],
448
625
  "flags": {
626
+ "env": {
627
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
628
+ "name": "env",
629
+ "hasDynamicHelp": false,
630
+ "multiple": false,
631
+ "type": "option"
632
+ },
449
633
  "dry-run": {
450
634
  "char": "d",
451
635
  "description": "Show what would change without making changes",
@@ -456,7 +640,7 @@
456
640
  },
457
641
  "hasDynamicHelp": false,
458
642
  "hiddenAliases": [],
459
- "id": "plugin:pull",
643
+ "id": "composer:pull",
460
644
  "pluginAlias": "@loopress/cli",
461
645
  "pluginName": "@loopress/cli",
462
646
  "pluginType": "core",
@@ -470,34 +654,56 @@
470
654
  "type": "boolean"
471
655
  }
472
656
  },
657
+ "yesFlag": {
658
+ "yes": {
659
+ "char": "y",
660
+ "description": "Answer yes to confirmation prompts",
661
+ "allowNo": false,
662
+ "type": "boolean"
663
+ }
664
+ },
473
665
  "isESM": true,
474
666
  "relativePath": [
475
667
  "dist",
476
668
  "commands",
477
- "plugin",
669
+ "composer",
478
670
  "pull.js"
479
671
  ]
480
672
  },
481
- "plugin:push": {
673
+ "composer:push": {
482
674
  "aliases": [],
483
675
  "args": {},
484
- "description": "Push plugins to WordPress to match loopress.json",
676
+ "description": "Push composer.json and composer.lock to WordPress and run composer install",
485
677
  "examples": [
486
- "$ lps plugin push",
487
- "$ lps plugin push --dry-run"
678
+ "$ lps composer push",
679
+ "$ lps composer push --dry-run"
488
680
  ],
489
681
  "flags": {
682
+ "env": {
683
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
684
+ "name": "env",
685
+ "hasDynamicHelp": false,
686
+ "multiple": false,
687
+ "type": "option"
688
+ },
490
689
  "dry-run": {
491
690
  "char": "d",
492
691
  "description": "Show what would change without making changes",
493
692
  "name": "dry-run",
494
693
  "allowNo": false,
495
694
  "type": "boolean"
695
+ },
696
+ "yes": {
697
+ "char": "y",
698
+ "description": "Answer yes to confirmation prompts",
699
+ "name": "yes",
700
+ "allowNo": false,
701
+ "type": "boolean"
496
702
  }
497
703
  },
498
704
  "hasDynamicHelp": false,
499
705
  "hiddenAliases": [],
500
- "id": "plugin:push",
706
+ "id": "composer:push",
501
707
  "pluginAlias": "@loopress/cli",
502
708
  "pluginName": "@loopress/cli",
503
709
  "pluginType": "core",
@@ -506,37 +712,36 @@
506
712
  "relativePath": [
507
713
  "dist",
508
714
  "commands",
509
- "plugin",
715
+ "composer",
510
716
  "push.js"
511
717
  ]
512
718
  },
513
- "seo:list": {
719
+ "form:list": {
514
720
  "aliases": [],
515
721
  "args": {},
516
- "description": "List posts with SEO meta, and redirects if supported by the active SEO plugin, on WordPress",
722
+ "description": "List forms from WordPress",
517
723
  "examples": [
518
- "$ lps seo list",
519
- "$ lps seo list --post-type post"
724
+ "$ lps form list"
520
725
  ],
521
726
  "flags": {
727
+ "env": {
728
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
729
+ "name": "env",
730
+ "hasDynamicHelp": false,
731
+ "multiple": false,
732
+ "type": "option"
733
+ },
522
734
  "json": {
523
735
  "char": "j",
524
736
  "description": "Output in JSON format",
525
737
  "name": "json",
526
738
  "allowNo": false,
527
739
  "type": "boolean"
528
- },
529
- "post-type": {
530
- "description": "Limit to specific post types",
531
- "name": "post-type",
532
- "hasDynamicHelp": false,
533
- "multiple": true,
534
- "type": "option"
535
740
  }
536
741
  },
537
742
  "hasDynamicHelp": false,
538
743
  "hiddenAliases": [],
539
- "id": "seo:list",
744
+ "id": "form:list",
540
745
  "pluginAlias": "@loopress/cli",
541
746
  "pluginName": "@loopress/cli",
542
747
  "pluginType": "core",
@@ -550,28 +755,42 @@
550
755
  "type": "boolean"
551
756
  }
552
757
  },
758
+ "yesFlag": {
759
+ "yes": {
760
+ "char": "y",
761
+ "description": "Answer yes to confirmation prompts",
762
+ "allowNo": false,
763
+ "type": "boolean"
764
+ }
765
+ },
553
766
  "isESM": true,
554
767
  "relativePath": [
555
768
  "dist",
556
769
  "commands",
557
- "seo",
770
+ "form",
558
771
  "list.js"
559
772
  ]
560
773
  },
561
- "seo:pull": {
774
+ "form:pull": {
562
775
  "aliases": [],
563
776
  "args": {
564
777
  "path": {
565
- "description": "Path to SEO directory (overrides project config)",
778
+ "description": "Path to forms directory (overrides project config)",
566
779
  "name": "path"
567
780
  }
568
781
  },
569
- "description": "Pull SEO settings, post meta, and (if supported) redirects from WordPress",
782
+ "description": "Pull forms from WordPress",
570
783
  "examples": [
571
- "$ lps seo pull",
572
- "$ lps seo pull --post-type post --post-type page"
784
+ "$ lps form pull"
573
785
  ],
574
786
  "flags": {
787
+ "env": {
788
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
789
+ "name": "env",
790
+ "hasDynamicHelp": false,
791
+ "multiple": false,
792
+ "type": "option"
793
+ },
575
794
  "dry-run": {
576
795
  "char": "d",
577
796
  "description": "Show what would change without making changes",
@@ -579,17 +798,17 @@
579
798
  "allowNo": false,
580
799
  "type": "boolean"
581
800
  },
582
- "post-type": {
583
- "description": "Limit post meta to specific post types",
584
- "name": "post-type",
585
- "hasDynamicHelp": false,
586
- "multiple": true,
587
- "type": "option"
801
+ "yes": {
802
+ "char": "y",
803
+ "description": "Answer yes to confirmation prompts",
804
+ "name": "yes",
805
+ "allowNo": false,
806
+ "type": "boolean"
588
807
  }
589
808
  },
590
809
  "hasDynamicHelp": false,
591
810
  "hiddenAliases": [],
592
- "id": "seo:pull",
811
+ "id": "form:pull",
593
812
  "pluginAlias": "@loopress/cli",
594
813
  "pluginName": "@loopress/cli",
595
814
  "pluginType": "core",
@@ -603,38 +822,60 @@
603
822
  "type": "boolean"
604
823
  }
605
824
  },
825
+ "yesFlag": {
826
+ "yes": {
827
+ "char": "y",
828
+ "description": "Answer yes to confirmation prompts",
829
+ "allowNo": false,
830
+ "type": "boolean"
831
+ }
832
+ },
606
833
  "isESM": true,
607
834
  "relativePath": [
608
835
  "dist",
609
836
  "commands",
610
- "seo",
837
+ "form",
611
838
  "pull.js"
612
839
  ]
613
840
  },
614
- "seo:push": {
841
+ "form:push": {
615
842
  "aliases": [],
616
843
  "args": {
617
844
  "path": {
618
- "description": "Path to SEO directory (overrides project config)",
845
+ "description": "Path to forms directory (overrides project config)",
619
846
  "name": "path"
620
847
  }
621
848
  },
622
- "description": "Push SEO settings, post meta, and redirects to WordPress. Local redirect files created remotely are renamed on disk to the `<id>-<slug>` convention. Fails clearly per file if the active SEO plugin does not support redirects.",
849
+ "description": "Push forms to WordPress. Local files created or updated remotely are renamed on disk to the `<id>-<slug>.json` convention.",
623
850
  "examples": [
624
- "$ lps seo push"
851
+ "$ lps form push"
625
852
  ],
626
853
  "flags": {
854
+ "env": {
855
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
856
+ "name": "env",
857
+ "hasDynamicHelp": false,
858
+ "multiple": false,
859
+ "type": "option"
860
+ },
627
861
  "dry-run": {
628
862
  "char": "d",
629
863
  "description": "Show what would change without making changes",
630
864
  "name": "dry-run",
631
865
  "allowNo": false,
632
866
  "type": "boolean"
867
+ },
868
+ "yes": {
869
+ "char": "y",
870
+ "description": "Answer yes to confirmation prompts",
871
+ "name": "yes",
872
+ "allowNo": false,
873
+ "type": "boolean"
633
874
  }
634
875
  },
635
876
  "hasDynamicHelp": false,
636
877
  "hiddenAliases": [],
637
- "id": "seo:push",
878
+ "id": "form:push",
638
879
  "pluginAlias": "@loopress/cli",
639
880
  "pluginName": "@loopress/cli",
640
881
  "pluginType": "core",
@@ -643,20 +884,184 @@
643
884
  "relativePath": [
644
885
  "dist",
645
886
  "commands",
646
- "seo",
887
+ "form",
647
888
  "push.js"
648
889
  ]
649
890
  },
650
- "project:config": {
891
+ "plugin:add": {
651
892
  "aliases": [],
652
- "args": {},
653
- "description": "Add or update a WordPress project environment. By default, authorizes via WordPress in your browser; manual username/Application Password entry is available as a fallback.",
654
- "examples": [
655
- "$ lps project config"
656
- ],
657
- "flags": {},
658
- "hasDynamicHelp": false,
659
- "hiddenAliases": [],
893
+ "args": {
894
+ "slug": {
895
+ "description": "Plugin slug on WordPress.org",
896
+ "name": "slug",
897
+ "required": true
898
+ }
899
+ },
900
+ "description": "Add a WordPress.org plugin to loopress.json",
901
+ "examples": [
902
+ "$ lps plugin add woocommerce",
903
+ "$ lps plugin add contact-form-7 --dry-run"
904
+ ],
905
+ "flags": {
906
+ "env": {
907
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
908
+ "name": "env",
909
+ "hasDynamicHelp": false,
910
+ "multiple": false,
911
+ "type": "option"
912
+ },
913
+ "dry-run": {
914
+ "char": "d",
915
+ "description": "Show what would change without making changes",
916
+ "name": "dry-run",
917
+ "allowNo": false,
918
+ "type": "boolean"
919
+ }
920
+ },
921
+ "hasDynamicHelp": false,
922
+ "hiddenAliases": [],
923
+ "id": "plugin:add",
924
+ "pluginAlias": "@loopress/cli",
925
+ "pluginName": "@loopress/cli",
926
+ "pluginType": "core",
927
+ "strict": true,
928
+ "enableJsonFlag": false,
929
+ "dryRunFlag": {
930
+ "dry-run": {
931
+ "char": "d",
932
+ "description": "Show what would change without making changes",
933
+ "allowNo": false,
934
+ "type": "boolean"
935
+ }
936
+ },
937
+ "yesFlag": {
938
+ "yes": {
939
+ "char": "y",
940
+ "description": "Answer yes to confirmation prompts",
941
+ "allowNo": false,
942
+ "type": "boolean"
943
+ }
944
+ },
945
+ "isESM": true,
946
+ "relativePath": [
947
+ "dist",
948
+ "commands",
949
+ "plugin",
950
+ "add.js"
951
+ ]
952
+ },
953
+ "plugin:pull": {
954
+ "aliases": [],
955
+ "args": {},
956
+ "description": "Pull installed plugins from WordPress into loopress.json",
957
+ "examples": [
958
+ "$ lps plugin pull",
959
+ "$ lps plugin pull --dry-run"
960
+ ],
961
+ "flags": {
962
+ "env": {
963
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
964
+ "name": "env",
965
+ "hasDynamicHelp": false,
966
+ "multiple": false,
967
+ "type": "option"
968
+ },
969
+ "dry-run": {
970
+ "char": "d",
971
+ "description": "Show what would change without making changes",
972
+ "name": "dry-run",
973
+ "allowNo": false,
974
+ "type": "boolean"
975
+ }
976
+ },
977
+ "hasDynamicHelp": false,
978
+ "hiddenAliases": [],
979
+ "id": "plugin:pull",
980
+ "pluginAlias": "@loopress/cli",
981
+ "pluginName": "@loopress/cli",
982
+ "pluginType": "core",
983
+ "strict": true,
984
+ "enableJsonFlag": false,
985
+ "dryRunFlag": {
986
+ "dry-run": {
987
+ "char": "d",
988
+ "description": "Show what would change without making changes",
989
+ "allowNo": false,
990
+ "type": "boolean"
991
+ }
992
+ },
993
+ "yesFlag": {
994
+ "yes": {
995
+ "char": "y",
996
+ "description": "Answer yes to confirmation prompts",
997
+ "allowNo": false,
998
+ "type": "boolean"
999
+ }
1000
+ },
1001
+ "isESM": true,
1002
+ "relativePath": [
1003
+ "dist",
1004
+ "commands",
1005
+ "plugin",
1006
+ "pull.js"
1007
+ ]
1008
+ },
1009
+ "plugin:push": {
1010
+ "aliases": [],
1011
+ "args": {},
1012
+ "description": "Push plugins to WordPress to match loopress.json",
1013
+ "examples": [
1014
+ "$ lps plugin push",
1015
+ "$ lps plugin push --dry-run"
1016
+ ],
1017
+ "flags": {
1018
+ "env": {
1019
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
1020
+ "name": "env",
1021
+ "hasDynamicHelp": false,
1022
+ "multiple": false,
1023
+ "type": "option"
1024
+ },
1025
+ "dry-run": {
1026
+ "char": "d",
1027
+ "description": "Show what would change without making changes",
1028
+ "name": "dry-run",
1029
+ "allowNo": false,
1030
+ "type": "boolean"
1031
+ },
1032
+ "yes": {
1033
+ "char": "y",
1034
+ "description": "Answer yes to confirmation prompts",
1035
+ "name": "yes",
1036
+ "allowNo": false,
1037
+ "type": "boolean"
1038
+ }
1039
+ },
1040
+ "hasDynamicHelp": false,
1041
+ "hiddenAliases": [],
1042
+ "id": "plugin:push",
1043
+ "pluginAlias": "@loopress/cli",
1044
+ "pluginName": "@loopress/cli",
1045
+ "pluginType": "core",
1046
+ "strict": true,
1047
+ "isESM": true,
1048
+ "relativePath": [
1049
+ "dist",
1050
+ "commands",
1051
+ "plugin",
1052
+ "push.js"
1053
+ ]
1054
+ },
1055
+ "project:config": {
1056
+ "aliases": [],
1057
+ "args": {},
1058
+ "description": "Add or update a WordPress project environment. By default, authorizes via WordPress in your browser; manual username/Application Password entry is available as a fallback.",
1059
+ "examples": [
1060
+ "$ lps project config"
1061
+ ],
1062
+ "flags": {},
1063
+ "hasDynamicHelp": false,
1064
+ "hiddenAliases": [],
660
1065
  "id": "project:config",
661
1066
  "pluginAlias": "@loopress/cli",
662
1067
  "pluginName": "@loopress/cli",
@@ -726,7 +1131,15 @@
726
1131
  "examples": [
727
1132
  "$ lps project push"
728
1133
  ],
729
- "flags": {},
1134
+ "flags": {
1135
+ "yes": {
1136
+ "char": "y",
1137
+ "description": "Answer yes to confirmation prompts",
1138
+ "name": "yes",
1139
+ "allowNo": false,
1140
+ "type": "boolean"
1141
+ }
1142
+ },
730
1143
  "hasDynamicHelp": false,
731
1144
  "hiddenAliases": [],
732
1145
  "id": "project:push",
@@ -791,6 +1204,194 @@
791
1204
  "switch.js"
792
1205
  ]
793
1206
  },
1207
+ "seo:list": {
1208
+ "aliases": [],
1209
+ "args": {},
1210
+ "description": "List posts with SEO meta, and redirects if supported by the active SEO plugin, on WordPress",
1211
+ "examples": [
1212
+ "$ lps seo list",
1213
+ "$ lps seo list --post-type post"
1214
+ ],
1215
+ "flags": {
1216
+ "env": {
1217
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
1218
+ "name": "env",
1219
+ "hasDynamicHelp": false,
1220
+ "multiple": false,
1221
+ "type": "option"
1222
+ },
1223
+ "json": {
1224
+ "char": "j",
1225
+ "description": "Output in JSON format",
1226
+ "name": "json",
1227
+ "allowNo": false,
1228
+ "type": "boolean"
1229
+ },
1230
+ "post-type": {
1231
+ "description": "Limit to specific post types",
1232
+ "name": "post-type",
1233
+ "hasDynamicHelp": false,
1234
+ "multiple": true,
1235
+ "type": "option"
1236
+ }
1237
+ },
1238
+ "hasDynamicHelp": false,
1239
+ "hiddenAliases": [],
1240
+ "id": "seo:list",
1241
+ "pluginAlias": "@loopress/cli",
1242
+ "pluginName": "@loopress/cli",
1243
+ "pluginType": "core",
1244
+ "strict": true,
1245
+ "enableJsonFlag": false,
1246
+ "dryRunFlag": {
1247
+ "dry-run": {
1248
+ "char": "d",
1249
+ "description": "Show what would change without making changes",
1250
+ "allowNo": false,
1251
+ "type": "boolean"
1252
+ }
1253
+ },
1254
+ "yesFlag": {
1255
+ "yes": {
1256
+ "char": "y",
1257
+ "description": "Answer yes to confirmation prompts",
1258
+ "allowNo": false,
1259
+ "type": "boolean"
1260
+ }
1261
+ },
1262
+ "isESM": true,
1263
+ "relativePath": [
1264
+ "dist",
1265
+ "commands",
1266
+ "seo",
1267
+ "list.js"
1268
+ ]
1269
+ },
1270
+ "seo:pull": {
1271
+ "aliases": [],
1272
+ "args": {
1273
+ "path": {
1274
+ "description": "Path to SEO directory (overrides project config)",
1275
+ "name": "path"
1276
+ }
1277
+ },
1278
+ "description": "Pull SEO settings, post meta, and (if supported) redirects from WordPress",
1279
+ "examples": [
1280
+ "$ lps seo pull",
1281
+ "$ lps seo pull --post-type post --post-type page"
1282
+ ],
1283
+ "flags": {
1284
+ "env": {
1285
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
1286
+ "name": "env",
1287
+ "hasDynamicHelp": false,
1288
+ "multiple": false,
1289
+ "type": "option"
1290
+ },
1291
+ "dry-run": {
1292
+ "char": "d",
1293
+ "description": "Show what would change without making changes",
1294
+ "name": "dry-run",
1295
+ "allowNo": false,
1296
+ "type": "boolean"
1297
+ },
1298
+ "yes": {
1299
+ "char": "y",
1300
+ "description": "Answer yes to confirmation prompts",
1301
+ "name": "yes",
1302
+ "allowNo": false,
1303
+ "type": "boolean"
1304
+ },
1305
+ "post-type": {
1306
+ "description": "Limit post meta to specific post types",
1307
+ "name": "post-type",
1308
+ "hasDynamicHelp": false,
1309
+ "multiple": true,
1310
+ "type": "option"
1311
+ }
1312
+ },
1313
+ "hasDynamicHelp": false,
1314
+ "hiddenAliases": [],
1315
+ "id": "seo:pull",
1316
+ "pluginAlias": "@loopress/cli",
1317
+ "pluginName": "@loopress/cli",
1318
+ "pluginType": "core",
1319
+ "strict": true,
1320
+ "enableJsonFlag": false,
1321
+ "dryRunFlag": {
1322
+ "dry-run": {
1323
+ "char": "d",
1324
+ "description": "Show what would change without making changes",
1325
+ "allowNo": false,
1326
+ "type": "boolean"
1327
+ }
1328
+ },
1329
+ "yesFlag": {
1330
+ "yes": {
1331
+ "char": "y",
1332
+ "description": "Answer yes to confirmation prompts",
1333
+ "allowNo": false,
1334
+ "type": "boolean"
1335
+ }
1336
+ },
1337
+ "isESM": true,
1338
+ "relativePath": [
1339
+ "dist",
1340
+ "commands",
1341
+ "seo",
1342
+ "pull.js"
1343
+ ]
1344
+ },
1345
+ "seo:push": {
1346
+ "aliases": [],
1347
+ "args": {
1348
+ "path": {
1349
+ "description": "Path to SEO directory (overrides project config)",
1350
+ "name": "path"
1351
+ }
1352
+ },
1353
+ "description": "Push SEO settings, post meta, and redirects to WordPress. Local redirect files created remotely are renamed on disk to the `<id>-<slug>` convention. Fails clearly per file if the active SEO plugin does not support redirects.",
1354
+ "examples": [
1355
+ "$ lps seo push"
1356
+ ],
1357
+ "flags": {
1358
+ "env": {
1359
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
1360
+ "name": "env",
1361
+ "hasDynamicHelp": false,
1362
+ "multiple": false,
1363
+ "type": "option"
1364
+ },
1365
+ "dry-run": {
1366
+ "char": "d",
1367
+ "description": "Show what would change without making changes",
1368
+ "name": "dry-run",
1369
+ "allowNo": false,
1370
+ "type": "boolean"
1371
+ },
1372
+ "yes": {
1373
+ "char": "y",
1374
+ "description": "Answer yes to confirmation prompts",
1375
+ "name": "yes",
1376
+ "allowNo": false,
1377
+ "type": "boolean"
1378
+ }
1379
+ },
1380
+ "hasDynamicHelp": false,
1381
+ "hiddenAliases": [],
1382
+ "id": "seo:push",
1383
+ "pluginAlias": "@loopress/cli",
1384
+ "pluginName": "@loopress/cli",
1385
+ "pluginType": "core",
1386
+ "strict": true,
1387
+ "isESM": true,
1388
+ "relativePath": [
1389
+ "dist",
1390
+ "commands",
1391
+ "seo",
1392
+ "push.js"
1393
+ ]
1394
+ },
794
1395
  "snippet:list": {
795
1396
  "aliases": [],
796
1397
  "args": {},
@@ -799,6 +1400,13 @@
799
1400
  "$ lps snippet list"
800
1401
  ],
801
1402
  "flags": {
1403
+ "env": {
1404
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
1405
+ "name": "env",
1406
+ "hasDynamicHelp": false,
1407
+ "multiple": false,
1408
+ "type": "option"
1409
+ },
802
1410
  "json": {
803
1411
  "char": "j",
804
1412
  "description": "Output in JSON format",
@@ -823,6 +1431,14 @@
823
1431
  "type": "boolean"
824
1432
  }
825
1433
  },
1434
+ "yesFlag": {
1435
+ "yes": {
1436
+ "char": "y",
1437
+ "description": "Answer yes to confirmation prompts",
1438
+ "allowNo": false,
1439
+ "type": "boolean"
1440
+ }
1441
+ },
826
1442
  "isESM": true,
827
1443
  "relativePath": [
828
1444
  "dist",
@@ -875,12 +1491,26 @@
875
1491
  "$ lps snippet pull --path ./snippets"
876
1492
  ],
877
1493
  "flags": {
1494
+ "env": {
1495
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
1496
+ "name": "env",
1497
+ "hasDynamicHelp": false,
1498
+ "multiple": false,
1499
+ "type": "option"
1500
+ },
878
1501
  "dry-run": {
879
1502
  "char": "d",
880
1503
  "description": "Show what would change without making changes",
881
1504
  "name": "dry-run",
882
1505
  "allowNo": false,
883
1506
  "type": "boolean"
1507
+ },
1508
+ "yes": {
1509
+ "char": "y",
1510
+ "description": "Answer yes to confirmation prompts",
1511
+ "name": "yes",
1512
+ "allowNo": false,
1513
+ "type": "boolean"
884
1514
  }
885
1515
  },
886
1516
  "hasDynamicHelp": false,
@@ -899,6 +1529,14 @@
899
1529
  "type": "boolean"
900
1530
  }
901
1531
  },
1532
+ "yesFlag": {
1533
+ "yes": {
1534
+ "char": "y",
1535
+ "description": "Answer yes to confirmation prompts",
1536
+ "allowNo": false,
1537
+ "type": "boolean"
1538
+ }
1539
+ },
902
1540
  "isESM": true,
903
1541
  "relativePath": [
904
1542
  "dist",
@@ -921,12 +1559,26 @@
921
1559
  "$ lps snippet push --path ./snippets"
922
1560
  ],
923
1561
  "flags": {
1562
+ "env": {
1563
+ "description": "Target environment by name, overriding the globally active one (lps project switch)",
1564
+ "name": "env",
1565
+ "hasDynamicHelp": false,
1566
+ "multiple": false,
1567
+ "type": "option"
1568
+ },
924
1569
  "dry-run": {
925
1570
  "char": "d",
926
1571
  "description": "Show what would change without making changes",
927
1572
  "name": "dry-run",
928
1573
  "allowNo": false,
929
1574
  "type": "boolean"
1575
+ },
1576
+ "yes": {
1577
+ "char": "y",
1578
+ "description": "Answer yes to confirmation prompts",
1579
+ "name": "yes",
1580
+ "allowNo": false,
1581
+ "type": "boolean"
930
1582
  }
931
1583
  },
932
1584
  "hasDynamicHelp": false,
@@ -993,5 +1645,5 @@
993
1645
  ]
994
1646
  }
995
1647
  },
996
- "version": "0.17.0"
1648
+ "version": "0.19.0"
997
1649
  }