@salesforce/plugin-deploy-retrieve 3.15.4 → 3.15.5

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 (3) hide show
  1. package/README.md +17 -17
  2. package/oclif.manifest.json +1040 -1040
  3. package/package.json +4 -4
@@ -404,16 +404,18 @@
404
404
  "source:convert:project"
405
405
  ]
406
406
  },
407
- "project:deploy:cancel": {
407
+ "project:delete:source": {
408
408
  "aliases": [
409
- "deploy:metadata:cancel"
409
+ "force:source:delete"
410
410
  ],
411
411
  "args": {},
412
412
  "deprecateAliases": true,
413
- "description": "Use this command to cancel a deploy operation that hasn't yet completed in the org. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
413
+ "description": "Use this command to delete components from orgs that don’t have source tracking. To remove deleted items from orgs that have source tracking enabled, \"<%= config.bin %> project deploy start\".\n\nWhen you run this command, both the local source file and the metadata component in the org are deleted.\n\nTo delete multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.",
414
414
  "examples": [
415
- "Cancel a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
416
- "Cancel the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
415
+ "Delete all local Apex source files and all Apex classes from the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
416
+ "Delete a specific Apex class and a Profile that has a space in it from your default org; don't prompt for confirmation:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyFabulousApexClass --metadata \"Profile: My Profile\" --no-prompt",
417
+ "Run the tests that aren’t in any managed packages as part of the deletion; if the delete succeeds, and the org has source-tracking enabled, update the source tracking information:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests --track-source",
418
+ "Delete the Apex source files in a directory and the corresponding components from your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes"
417
419
  ],
418
420
  "flags": {
419
421
  "json": {
@@ -431,103 +433,206 @@
431
433
  "multiple": false,
432
434
  "type": "option"
433
435
  },
436
+ "api-version": {
437
+ "aliases": [
438
+ "apiversion"
439
+ ],
440
+ "deprecateAliases": true,
441
+ "description": "Override the api version used for api requests made by this command",
442
+ "name": "api-version",
443
+ "hasDynamicHelp": false,
444
+ "multiple": false,
445
+ "type": "option"
446
+ },
447
+ "loglevel": {
448
+ "deprecated": {
449
+ "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
450
+ },
451
+ "hidden": true,
452
+ "name": "loglevel",
453
+ "hasDynamicHelp": false,
454
+ "multiple": false,
455
+ "type": "option"
456
+ },
434
457
  "target-org": {
458
+ "aliases": [
459
+ "targetusername",
460
+ "u"
461
+ ],
435
462
  "char": "o",
463
+ "deprecateAliases": true,
436
464
  "name": "target-org",
437
465
  "noCacheDefault": true,
438
- "summary": "Username or alias of the target org.",
466
+ "required": true,
467
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
439
468
  "hasDynamicHelp": true,
440
469
  "multiple": false,
441
470
  "type": "option"
442
471
  },
443
- "async": {
444
- "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
445
- "exclusive": [
446
- "wait"
472
+ "check-only": {
473
+ "aliases": [
474
+ "checkonly"
447
475
  ],
448
- "name": "async",
449
- "summary": "Run the command asynchronously.",
476
+ "char": "c",
477
+ "deprecateAliases": true,
478
+ "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only parameter to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
479
+ "name": "check-only",
480
+ "summary": "Validate delete command but don't delete anything from the org or the local project.",
450
481
  "allowNo": false,
451
482
  "type": "boolean"
452
483
  },
453
- "job-id": {
454
- "char": "i",
455
- "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
456
- "name": "job-id",
457
- "summary": "Job ID of the deploy operation you want to cancel.",
484
+ "wait": {
485
+ "char": "w",
486
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
487
+ "name": "wait",
488
+ "summary": "Number of minutes to wait for the command to finish.",
489
+ "hasDynamicHelp": true,
490
+ "multiple": false,
491
+ "type": "option"
492
+ },
493
+ "tests": {
494
+ "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
495
+ "helpGroup": "Test",
496
+ "name": "tests",
497
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
498
+ "hasDynamicHelp": false,
499
+ "multiple": true,
500
+ "type": "option"
501
+ },
502
+ "test-level": {
503
+ "aliases": [
504
+ "testlevel"
505
+ ],
506
+ "char": "l",
507
+ "deprecateAliases": true,
508
+ "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
509
+ "helpGroup": "Test",
510
+ "name": "test-level",
511
+ "summary": "Deployment Apex testing level.",
458
512
  "hasDynamicHelp": false,
459
513
  "multiple": false,
514
+ "options": [
515
+ "NoTestRun",
516
+ "RunSpecifiedTests",
517
+ "RunLocalTests",
518
+ "RunAllTestsInOrg"
519
+ ],
460
520
  "type": "option"
461
521
  },
462
- "use-most-recent": {
522
+ "no-prompt": {
523
+ "aliases": [
524
+ "noprompt"
525
+ ],
463
526
  "char": "r",
464
- "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent deploy operations was more than 3 days ago, this flag won't find a job ID.",
465
- "name": "use-most-recent",
466
- "summary": "Use the job ID of the most recent deploy operation.",
527
+ "deprecateAliases": true,
528
+ "name": "no-prompt",
529
+ "summary": "Don't prompt for delete confirmation.",
467
530
  "allowNo": false,
468
531
  "type": "boolean"
469
532
  },
470
- "wait": {
471
- "char": "w",
472
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
473
- "exclusive": [
474
- "async"
533
+ "metadata": {
534
+ "char": "m",
535
+ "description": "If you specify this parameter, don’t specify --source-dir.",
536
+ "name": "metadata",
537
+ "summary": "Metadata components to delete.",
538
+ "delimiter": ",",
539
+ "hasDynamicHelp": false,
540
+ "multiple": true,
541
+ "type": "option"
542
+ },
543
+ "source-dir": {
544
+ "aliases": [
545
+ "sourcepath"
475
546
  ],
476
- "name": "wait",
477
- "summary": "Number of minutes to wait for the command to complete and display results.",
478
- "hasDynamicHelp": true,
479
- "helpValue": "<minutes>",
480
- "multiple": false,
547
+ "char": "p",
548
+ "deprecateAliases": true,
549
+ "description": "The supplied paths can be a single file (in which case the operation is applied to only one file) or a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this parameter, don’t specify --metadata.",
550
+ "name": "source-dir",
551
+ "summary": "Source file paths to delete.",
552
+ "delimiter": ",",
553
+ "hasDynamicHelp": false,
554
+ "multiple": true,
481
555
  "type": "option"
556
+ },
557
+ "track-source": {
558
+ "aliases": [
559
+ "tracksource"
560
+ ],
561
+ "char": "t",
562
+ "deprecateAliases": true,
563
+ "exclusive": [
564
+ "check-only"
565
+ ],
566
+ "name": "track-source",
567
+ "summary": "If the delete succeeds, update the source tracking information.",
568
+ "allowNo": false,
569
+ "type": "boolean"
570
+ },
571
+ "force-overwrite": {
572
+ "aliases": [
573
+ "forceoverwrite"
574
+ ],
575
+ "char": "f",
576
+ "dependsOn": [
577
+ "track-source"
578
+ ],
579
+ "deprecateAliases": true,
580
+ "name": "force-overwrite",
581
+ "summary": "Ignore conflict warnings and overwrite changes to the org.",
582
+ "allowNo": false,
583
+ "type": "boolean"
584
+ },
585
+ "verbose": {
586
+ "name": "verbose",
587
+ "summary": "Verbose output of the delete result.",
588
+ "allowNo": false,
589
+ "type": "boolean"
482
590
  }
483
591
  },
484
592
  "hasDynamicHelp": true,
485
593
  "hiddenAliases": [],
486
- "id": "project:deploy:cancel",
594
+ "id": "project:delete:source",
487
595
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
488
596
  "pluginName": "@salesforce/plugin-deploy-retrieve",
489
597
  "pluginType": "core",
490
598
  "strict": true,
491
- "summary": "Cancel a deploy operation.",
599
+ "summary": "Delete source from your project and from a non-source-tracked org.",
492
600
  "enableJsonFlag": true,
601
+ "requiresProject": true,
493
602
  "isESM": true,
494
603
  "relativePath": [
495
604
  "lib",
496
605
  "commands",
497
606
  "project",
498
- "deploy",
499
- "cancel.js"
607
+ "delete",
608
+ "source.js"
500
609
  ],
501
610
  "aliasPermutations": [
502
- "deploy:metadata:cancel",
503
- "metadata:deploy:cancel",
504
- "metadata:cancel:deploy",
505
- "deploy:cancel:metadata",
506
- "cancel:deploy:metadata",
507
- "cancel:metadata:deploy"
611
+ "force:source:delete",
612
+ "source:force:delete",
613
+ "source:delete:force",
614
+ "force:delete:source",
615
+ "delete:force:source",
616
+ "delete:source:force"
508
617
  ],
509
618
  "permutations": [
510
- "project:deploy:cancel",
511
- "deploy:project:cancel",
512
- "deploy:cancel:project",
513
- "project:cancel:deploy",
514
- "cancel:project:deploy",
515
- "cancel:deploy:project"
619
+ "project:delete:source",
620
+ "delete:project:source",
621
+ "delete:source:project",
622
+ "project:source:delete",
623
+ "source:project:delete",
624
+ "source:delete:project"
516
625
  ]
517
626
  },
518
- "project:deploy:preview": {
627
+ "project:delete:tracking": {
519
628
  "aliases": [
520
- "deploy:metadata:preview"
629
+ "force:source:tracking:clear"
521
630
  ],
522
631
  "args": {},
523
632
  "deprecateAliases": true,
524
- "description": "You must run this command from within a project.\n\nThe command outputs a table that describes what will happen if you run the \"<%= config.bin %> project deploy start\" command. The table lists the metadata components that will be deployed and deleted. The table also lists the current conflicts between files in your local project and components in the org. Finally, the table lists the files that won't be deployed because they're included in your .forceignore file.\n\nIf your org allows source tracking, then this command displays potential conflicts between the org and your local project. Some orgs, such as production org, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo preview the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.",
633
+ "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nDeletes all local source tracking information. When you next run 'project deploy preview', Salesforce CLI displays all local and remote files as changed, and any files with the same name are listed as conflicts.",
525
634
  "examples": [
526
- "NOTE: The commands to preview a deployment and actually deploy it use similar flags. We provide a few preview examples here, but see the help for \"<%= config.bin %> project deploy start\" for more examples that you can adapt for previewing.",
527
- "Preview the deployment of source files in a directory, such as force-app, to your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
528
- "Preview the deployment of all Apex classes to an org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
529
- "Preview deployment of a specific Apex class:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass",
530
- "Preview deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
635
+ "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
531
636
  ],
532
637
  "flags": {
533
638
  "json": {
@@ -545,54 +650,34 @@
545
650
  "multiple": false,
546
651
  "type": "option"
547
652
  },
548
- "ignore-conflicts": {
549
- "char": "c",
550
- "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
551
- "name": "ignore-conflicts",
552
- "summary": "Don't display conflicts in preview of the deployment.",
553
- "allowNo": false,
554
- "type": "boolean"
555
- },
556
- "manifest": {
557
- "char": "x",
558
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
559
- "exclusive": [
560
- "source-dir",
561
- "metadata"
653
+ "api-version": {
654
+ "aliases": [
655
+ "apiversion"
562
656
  ],
563
- "name": "manifest",
564
- "summary": "Full file path for manifest (package.xml) of components to preview.",
657
+ "deprecateAliases": true,
658
+ "description": "Override the api version used for api requests made by this command",
659
+ "name": "api-version",
565
660
  "hasDynamicHelp": false,
566
661
  "multiple": false,
567
662
  "type": "option"
568
663
  },
569
- "metadata": {
570
- "char": "m",
571
- "exclusive": [
572
- "manifest",
573
- "source-dir"
574
- ],
575
- "name": "metadata",
576
- "summary": "Metadata component names to preview.",
664
+ "loglevel": {
665
+ "deprecated": {
666
+ "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
667
+ },
668
+ "hidden": true,
669
+ "name": "loglevel",
577
670
  "hasDynamicHelp": false,
578
- "multiple": true,
579
- "type": "option"
580
- },
581
- "source-dir": {
582
- "char": "d",
583
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
584
- "exclusive": [
585
- "manifest",
586
- "metadata"
587
- ],
588
- "name": "source-dir",
589
- "summary": "Path to the local source files to preview.",
590
- "hasDynamicHelp": false,
591
- "multiple": true,
671
+ "multiple": false,
592
672
  "type": "option"
593
673
  },
594
674
  "target-org": {
675
+ "aliases": [
676
+ "targetusername",
677
+ "u"
678
+ ],
595
679
  "char": "o",
680
+ "deprecateAliases": true,
596
681
  "name": "target-org",
597
682
  "noCacheDefault": true,
598
683
  "required": true,
@@ -601,21 +686,26 @@
601
686
  "multiple": false,
602
687
  "type": "option"
603
688
  },
604
- "concise": {
605
- "name": "concise",
606
- "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
689
+ "no-prompt": {
690
+ "aliases": [
691
+ "noprompt"
692
+ ],
693
+ "char": "p",
694
+ "deprecateAliases": true,
695
+ "name": "no-prompt",
696
+ "summary": "Don't prompt for source tracking override confirmation.",
607
697
  "allowNo": false,
608
698
  "type": "boolean"
609
699
  }
610
700
  },
611
701
  "hasDynamicHelp": true,
612
702
  "hiddenAliases": [],
613
- "id": "project:deploy:preview",
703
+ "id": "project:delete:tracking",
614
704
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
615
705
  "pluginName": "@salesforce/plugin-deploy-retrieve",
616
706
  "pluginType": "core",
617
707
  "strict": true,
618
- "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
708
+ "summary": "Delete all local source tracking information.",
619
709
  "enableJsonFlag": true,
620
710
  "requiresProject": true,
621
711
  "isESM": true,
@@ -623,36 +713,54 @@
623
713
  "lib",
624
714
  "commands",
625
715
  "project",
626
- "deploy",
627
- "preview.js"
716
+ "delete",
717
+ "tracking.js"
628
718
  ],
629
719
  "aliasPermutations": [
630
- "deploy:metadata:preview",
631
- "metadata:deploy:preview",
632
- "metadata:preview:deploy",
633
- "deploy:preview:metadata",
634
- "preview:deploy:metadata",
635
- "preview:metadata:deploy"
720
+ "force:source:tracking:clear",
721
+ "source:force:tracking:clear",
722
+ "source:tracking:force:clear",
723
+ "source:tracking:clear:force",
724
+ "force:tracking:source:clear",
725
+ "tracking:force:source:clear",
726
+ "tracking:source:force:clear",
727
+ "tracking:source:clear:force",
728
+ "force:tracking:clear:source",
729
+ "tracking:force:clear:source",
730
+ "tracking:clear:force:source",
731
+ "tracking:clear:source:force",
732
+ "force:source:clear:tracking",
733
+ "source:force:clear:tracking",
734
+ "source:clear:force:tracking",
735
+ "source:clear:tracking:force",
736
+ "force:clear:source:tracking",
737
+ "clear:force:source:tracking",
738
+ "clear:source:force:tracking",
739
+ "clear:source:tracking:force",
740
+ "force:clear:tracking:source",
741
+ "clear:force:tracking:source",
742
+ "clear:tracking:force:source",
743
+ "clear:tracking:source:force"
636
744
  ],
637
745
  "permutations": [
638
- "project:deploy:preview",
639
- "deploy:project:preview",
640
- "deploy:preview:project",
641
- "project:preview:deploy",
642
- "preview:project:deploy",
643
- "preview:deploy:project"
746
+ "project:delete:tracking",
747
+ "delete:project:tracking",
748
+ "delete:tracking:project",
749
+ "project:tracking:delete",
750
+ "tracking:project:delete",
751
+ "tracking:delete:project"
644
752
  ]
645
753
  },
646
- "project:deploy:quick": {
754
+ "project:deploy:cancel": {
647
755
  "aliases": [
648
- "deploy:metadata:quick"
756
+ "deploy:metadata:cancel"
649
757
  ],
650
758
  "args": {},
651
759
  "deprecateAliases": true,
652
- "description": "Before you run this command, first create a validated deployment with the \"<%= config.bin %> project deploy validate\" command, which returns a job ID. Validated deployments haven't been deployed to the org yet; you deploy them with this command. Either pass the job ID to this command or use the --use-most-recent flag to use the job ID of the most recently validated deployment. For the quick deploy to succeed, the associated validated deployment must also have succeeded.\n\nExecuting this quick deploy command takes less time than a standard deploy because it skips running Apex tests. These tests were previously run as part of the validation. Validating first and then running a quick deploy is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nThis command doesn't support source-tracking. The source you deploy overwrites the corresponding metadata in your org. This command doesn’t attempt to merge your source with the versions in your org.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. Use \"<%= config.bin %> project deploy start\" instead.",
760
+ "description": "Use this command to cancel a deploy operation that hasn't yet completed in the org. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
653
761
  "examples": [
654
- "Run a quick deploy to your default org using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
655
- "Asynchronously run a quick deploy of the most recently validated deployment to an org with alias \"my-prod-org\":\n<%= config.bin %> <%= command.id %> --async --use-most-recent --target-org my-prod-org"
762
+ "Cancel a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
763
+ "Cancel the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
656
764
  ],
657
765
  "flags": {
658
766
  "json": {
@@ -670,8 +778,17 @@
670
778
  "multiple": false,
671
779
  "type": "option"
672
780
  },
781
+ "target-org": {
782
+ "char": "o",
783
+ "name": "target-org",
784
+ "noCacheDefault": true,
785
+ "summary": "Username or alias of the target org.",
786
+ "hasDynamicHelp": true,
787
+ "multiple": false,
788
+ "type": "option"
789
+ },
673
790
  "async": {
674
- "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
791
+ "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
675
792
  "exclusive": [
676
793
  "wait"
677
794
  ],
@@ -680,152 +797,84 @@
680
797
  "allowNo": false,
681
798
  "type": "boolean"
682
799
  },
683
- "concise": {
684
- "exclusive": [
685
- "verbose"
686
- ],
687
- "name": "concise",
688
- "summary": "Show concise output of the deploy result.",
689
- "allowNo": false,
690
- "type": "boolean"
691
- },
692
800
  "job-id": {
693
801
  "char": "i",
694
- "description": "The job ID is valid for 10 days from when you started the validation.",
802
+ "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
695
803
  "name": "job-id",
696
- "summary": "Job ID of the deployment you want to quick deploy.",
804
+ "summary": "Job ID of the deploy operation you want to cancel.",
697
805
  "hasDynamicHelp": false,
698
806
  "multiple": false,
699
807
  "type": "option"
700
808
  },
701
- "target-org": {
702
- "char": "o",
703
- "name": "target-org",
704
- "noCacheDefault": true,
705
- "summary": "Username or alias of the target org.",
706
- "hasDynamicHelp": true,
707
- "multiple": false,
708
- "type": "option"
709
- },
710
809
  "use-most-recent": {
711
810
  "char": "r",
712
- "description": "For performance reasons, this flag uses only job IDs that were validated in the past 3 days or less. If your most recent deployment validation was more than 3 days ago, this flag won't find a job ID.",
811
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent deploy operations was more than 3 days ago, this flag won't find a job ID.",
713
812
  "name": "use-most-recent",
714
- "summary": "Use the job ID of the most recently validated deployment.",
715
- "allowNo": false,
716
- "type": "boolean"
717
- },
718
- "verbose": {
719
- "exclusive": [
720
- "concise"
721
- ],
722
- "name": "verbose",
723
- "summary": "Show verbose output of the deploy result.",
813
+ "summary": "Use the job ID of the most recent deploy operation.",
724
814
  "allowNo": false,
725
815
  "type": "boolean"
726
816
  },
727
817
  "wait": {
728
818
  "char": "w",
729
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
819
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, run \"<%= config.bin %> project deploy report\".",
730
820
  "exclusive": [
731
821
  "async"
732
822
  ],
733
823
  "name": "wait",
734
824
  "summary": "Number of minutes to wait for the command to complete and display results.",
735
- "default": "33 minutes",
736
825
  "hasDynamicHelp": true,
737
826
  "helpValue": "<minutes>",
738
827
  "multiple": false,
739
828
  "type": "option"
740
- },
741
- "api-version": {
742
- "char": "a",
743
- "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
744
- "name": "api-version",
745
- "summary": "Target API version for the deploy.",
746
- "hasDynamicHelp": false,
747
- "multiple": false,
748
- "type": "option"
749
829
  }
750
830
  },
751
831
  "hasDynamicHelp": true,
752
832
  "hiddenAliases": [],
753
- "id": "project:deploy:quick",
833
+ "id": "project:deploy:cancel",
754
834
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
755
835
  "pluginName": "@salesforce/plugin-deploy-retrieve",
756
836
  "pluginType": "core",
757
837
  "strict": true,
758
- "summary": "Quickly deploy a validated deployment to an org.",
838
+ "summary": "Cancel a deploy operation.",
759
839
  "enableJsonFlag": true,
760
- "errorCodes": {
761
- "header": "ERROR CODES",
762
- "body": [
763
- {
764
- "name": "Succeeded (0)",
765
- "description": "The deploy succeeded."
766
- },
767
- {
768
- "name": "Canceled (1)",
769
- "description": "The deploy was canceled."
770
- },
771
- {
772
- "name": "Failed (1)",
773
- "description": "The deploy failed."
774
- },
775
- {
776
- "name": "SucceededPartial (68)",
777
- "description": "The deploy partially succeeded."
778
- },
779
- {
780
- "name": "InProgress (69)",
781
- "description": "The deploy is in progress."
782
- },
783
- {
784
- "name": "Pending (69)",
785
- "description": "The deploy is pending."
786
- },
787
- {
788
- "name": "Canceling (69)",
789
- "description": "The deploy is being canceled."
790
- }
791
- ]
792
- },
793
840
  "isESM": true,
794
841
  "relativePath": [
795
842
  "lib",
796
843
  "commands",
797
844
  "project",
798
845
  "deploy",
799
- "quick.js"
846
+ "cancel.js"
800
847
  ],
801
848
  "aliasPermutations": [
802
- "deploy:metadata:quick",
803
- "metadata:deploy:quick",
804
- "metadata:quick:deploy",
805
- "deploy:quick:metadata",
806
- "quick:deploy:metadata",
807
- "quick:metadata:deploy"
849
+ "deploy:metadata:cancel",
850
+ "metadata:deploy:cancel",
851
+ "metadata:cancel:deploy",
852
+ "deploy:cancel:metadata",
853
+ "cancel:deploy:metadata",
854
+ "cancel:metadata:deploy"
808
855
  ],
809
856
  "permutations": [
810
- "project:deploy:quick",
811
- "deploy:project:quick",
812
- "deploy:quick:project",
813
- "project:quick:deploy",
814
- "quick:project:deploy",
815
- "quick:deploy:project"
857
+ "project:deploy:cancel",
858
+ "deploy:project:cancel",
859
+ "deploy:cancel:project",
860
+ "project:cancel:deploy",
861
+ "cancel:project:deploy",
862
+ "cancel:deploy:project"
816
863
  ]
817
864
  },
818
- "project:deploy:report": {
865
+ "project:deploy:preview": {
819
866
  "aliases": [
820
- "deploy:metadata:report"
867
+ "deploy:metadata:preview"
821
868
  ],
822
869
  "args": {},
823
870
  "deprecateAliases": true,
824
- "description": "Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation. If you specify the --wait flag, the command polls for the status every second until the timeout of --wait minutes. If you don't specify the --wait flag, the command simply checks and displays the status of the deploy; the command doesn't poll for the status.\n\nYou typically don't specify the --target-org flag because the cached job already references the org to which you deployed. But if you run this command on a computer different than the one from which you deployed, then you must specify the --target-org and it must point to the same org.\n\nThis command doesn't update source tracking information.",
871
+ "description": "You must run this command from within a project.\n\nThe command outputs a table that describes what will happen if you run the \"<%= config.bin %> project deploy start\" command. The table lists the metadata components that will be deployed and deleted. The table also lists the current conflicts between files in your local project and components in the org. Finally, the table lists the files that won't be deployed because they're included in your .forceignore file.\n\nIf your org allows source tracking, then this command displays potential conflicts between the org and your local project. Some orgs, such as production org, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo preview the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.",
825
872
  "examples": [
826
- "Check the status using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
827
- "Check the status of the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent",
828
- "Poll for the status using a job ID and target org:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2 --target-org me@my.org --wait 30"
873
+ "NOTE: The commands to preview a deployment and actually deploy it use similar flags. We provide a few preview examples here, but see the help for \"<%= config.bin %> project deploy start\" for more examples that you can adapt for previewing.",
874
+ "Preview the deployment of source files in a directory, such as force-app, to your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
875
+ "Preview the deployment of all Apex classes to an org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
876
+ "Preview deployment of a specific Apex class:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass",
877
+ "Preview deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
829
878
  ],
830
879
  "flags": {
831
880
  "json": {
@@ -843,133 +892,114 @@
843
892
  "multiple": false,
844
893
  "type": "option"
845
894
  },
846
- "target-org": {
847
- "char": "o",
848
- "name": "target-org",
849
- "noCacheDefault": true,
850
- "summary": "Username or alias of the target org.",
851
- "hasDynamicHelp": true,
852
- "multiple": false,
853
- "type": "option"
895
+ "ignore-conflicts": {
896
+ "char": "c",
897
+ "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
898
+ "name": "ignore-conflicts",
899
+ "summary": "Don't display conflicts in preview of the deployment.",
900
+ "allowNo": false,
901
+ "type": "boolean"
854
902
  },
855
- "job-id": {
856
- "char": "i",
857
- "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
858
- "name": "job-id",
859
- "summary": "Job ID of the deploy operation you want to check the status of.",
903
+ "manifest": {
904
+ "char": "x",
905
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
906
+ "exclusive": [
907
+ "source-dir",
908
+ "metadata"
909
+ ],
910
+ "name": "manifest",
911
+ "summary": "Full file path for manifest (package.xml) of components to preview.",
860
912
  "hasDynamicHelp": false,
861
913
  "multiple": false,
862
914
  "type": "option"
863
915
  },
864
- "use-most-recent": {
865
- "char": "r",
866
- "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
867
- "name": "use-most-recent",
868
- "summary": "Use the job ID of the most recent deploy operation.",
869
- "allowNo": false,
870
- "type": "boolean"
871
- },
872
- "coverage-formatters": {
873
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
874
- "helpGroup": "Test",
875
- "name": "coverage-formatters",
876
- "summary": "Format of the code coverage results.",
916
+ "metadata": {
917
+ "char": "m",
918
+ "exclusive": [
919
+ "manifest",
920
+ "source-dir"
921
+ ],
922
+ "name": "metadata",
923
+ "summary": "Metadata component names to preview.",
877
924
  "hasDynamicHelp": false,
878
925
  "multiple": true,
879
- "options": [
880
- "clover",
881
- "cobertura",
882
- "html-spa",
883
- "html",
884
- "json",
885
- "json-summary",
886
- "lcovonly",
887
- "none",
888
- "teamcity",
889
- "text",
890
- "text-summary"
891
- ],
892
926
  "type": "option"
893
927
  },
894
- "junit": {
895
- "helpGroup": "Test",
896
- "name": "junit",
897
- "summary": "Output JUnit test results.",
898
- "allowNo": false,
899
- "type": "boolean"
900
- },
901
- "results-dir": {
902
- "helpGroup": "Test",
903
- "name": "results-dir",
904
- "relationships": [
905
- {
906
- "type": "some",
907
- "flags": [
908
- "coverage-formatters",
909
- "junit"
910
- ]
911
- }
928
+ "source-dir": {
929
+ "char": "d",
930
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
931
+ "exclusive": [
932
+ "manifest",
933
+ "metadata"
912
934
  ],
913
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
935
+ "name": "source-dir",
936
+ "summary": "Path to the local source files to preview.",
914
937
  "hasDynamicHelp": false,
915
- "multiple": false,
938
+ "multiple": true,
916
939
  "type": "option"
917
940
  },
918
- "wait": {
919
- "char": "w",
920
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
921
- "name": "wait",
922
- "summary": "Number of minutes to wait for command to complete and display results.",
941
+ "target-org": {
942
+ "char": "o",
943
+ "name": "target-org",
944
+ "noCacheDefault": true,
945
+ "required": true,
946
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
923
947
  "hasDynamicHelp": true,
924
- "helpValue": "<minutes>",
925
948
  "multiple": false,
926
949
  "type": "option"
950
+ },
951
+ "concise": {
952
+ "name": "concise",
953
+ "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
954
+ "allowNo": false,
955
+ "type": "boolean"
927
956
  }
928
957
  },
929
958
  "hasDynamicHelp": true,
930
959
  "hiddenAliases": [],
931
- "id": "project:deploy:report",
960
+ "id": "project:deploy:preview",
932
961
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
933
962
  "pluginName": "@salesforce/plugin-deploy-retrieve",
934
963
  "pluginType": "core",
935
964
  "strict": true,
936
- "summary": "Check or poll for the status of a deploy operation.",
965
+ "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
937
966
  "enableJsonFlag": true,
967
+ "requiresProject": true,
938
968
  "isESM": true,
939
969
  "relativePath": [
940
970
  "lib",
941
971
  "commands",
942
972
  "project",
943
973
  "deploy",
944
- "report.js"
974
+ "preview.js"
945
975
  ],
946
976
  "aliasPermutations": [
947
- "deploy:metadata:report",
948
- "metadata:deploy:report",
949
- "metadata:report:deploy",
950
- "deploy:report:metadata",
951
- "report:deploy:metadata",
952
- "report:metadata:deploy"
977
+ "deploy:metadata:preview",
978
+ "metadata:deploy:preview",
979
+ "metadata:preview:deploy",
980
+ "deploy:preview:metadata",
981
+ "preview:deploy:metadata",
982
+ "preview:metadata:deploy"
953
983
  ],
954
984
  "permutations": [
955
- "project:deploy:report",
956
- "deploy:project:report",
957
- "deploy:report:project",
958
- "project:report:deploy",
959
- "report:project:deploy",
960
- "report:deploy:project"
985
+ "project:deploy:preview",
986
+ "deploy:project:preview",
987
+ "deploy:preview:project",
988
+ "project:preview:deploy",
989
+ "preview:project:deploy",
990
+ "preview:deploy:project"
961
991
  ]
962
992
  },
963
- "project:deploy:resume": {
993
+ "project:deploy:quick": {
964
994
  "aliases": [
965
- "deploy:metadata:resume"
995
+ "deploy:metadata:quick"
966
996
  ],
967
997
  "args": {},
968
998
  "deprecateAliases": true,
969
- "description": "Use this command to resume watching a deploy operation if the original command times out or you specified the --async flag. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations. This command doesn't resume the original operation itself, because the operation always continues after you've started it, regardless of whether you're watching it or not. When the deploy completes, source tracking information is updated as needed.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
999
+ "description": "Before you run this command, first create a validated deployment with the \"<%= config.bin %> project deploy validate\" command, which returns a job ID. Validated deployments haven't been deployed to the org yet; you deploy them with this command. Either pass the job ID to this command or use the --use-most-recent flag to use the job ID of the most recently validated deployment. For the quick deploy to succeed, the associated validated deployment must also have succeeded.\n\nExecuting this quick deploy command takes less time than a standard deploy because it skips running Apex tests. These tests were previously run as part of the validation. Validating first and then running a quick deploy is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nThis command doesn't support source-tracking. The source you deploy overwrites the corresponding metadata in your org. This command doesn’t attempt to merge your source with the versions in your org.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. Use \"<%= config.bin %> project deploy start\" instead.",
970
1000
  "examples": [
971
- "Resume watching a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
972
- "Resume watching the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
1001
+ "Run a quick deploy to your default org using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1002
+ "Asynchronously run a quick deploy of the most recently validated deployment to an org with alias \"my-prod-org\":\n<%= config.bin %> <%= command.id %> --async --use-most-recent --target-org my-prod-org"
973
1003
  ],
974
1004
  "flags": {
975
1005
  "json": {
@@ -987,29 +1017,48 @@
987
1017
  "multiple": false,
988
1018
  "type": "option"
989
1019
  },
1020
+ "async": {
1021
+ "description": "The command immediately returns the control of the terminal to you. This way, you can continue to use the CLI. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
1022
+ "exclusive": [
1023
+ "wait"
1024
+ ],
1025
+ "name": "async",
1026
+ "summary": "Run the command asynchronously.",
1027
+ "allowNo": false,
1028
+ "type": "boolean"
1029
+ },
990
1030
  "concise": {
991
1031
  "exclusive": [
992
1032
  "verbose"
993
1033
  ],
994
1034
  "name": "concise",
995
- "summary": "Show concise output of the deploy operation result.",
1035
+ "summary": "Show concise output of the deploy result.",
996
1036
  "allowNo": false,
997
1037
  "type": "boolean"
998
1038
  },
999
1039
  "job-id": {
1000
1040
  "char": "i",
1001
- "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1041
+ "description": "The job ID is valid for 10 days from when you started the validation.",
1002
1042
  "name": "job-id",
1003
- "summary": "Job ID of the deploy operation you want to resume.",
1043
+ "summary": "Job ID of the deployment you want to quick deploy.",
1004
1044
  "hasDynamicHelp": false,
1005
1045
  "multiple": false,
1006
1046
  "type": "option"
1007
1047
  },
1048
+ "target-org": {
1049
+ "char": "o",
1050
+ "name": "target-org",
1051
+ "noCacheDefault": true,
1052
+ "summary": "Username or alias of the target org.",
1053
+ "hasDynamicHelp": true,
1054
+ "multiple": false,
1055
+ "type": "option"
1056
+ },
1008
1057
  "use-most-recent": {
1009
1058
  "char": "r",
1010
- "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1059
+ "description": "For performance reasons, this flag uses only job IDs that were validated in the past 3 days or less. If your most recent deployment validation was more than 3 days ago, this flag won't find a job ID.",
1011
1060
  "name": "use-most-recent",
1012
- "summary": "Use the job ID of the most recent deploy operation.",
1061
+ "summary": "Use the job ID of the most recently validated deployment.",
1013
1062
  "allowNo": false,
1014
1063
  "type": "boolean"
1015
1064
  },
@@ -1018,62 +1067,29 @@
1018
1067
  "concise"
1019
1068
  ],
1020
1069
  "name": "verbose",
1021
- "summary": "Show verbose output of the deploy operation result.",
1070
+ "summary": "Show verbose output of the deploy result.",
1022
1071
  "allowNo": false,
1023
1072
  "type": "boolean"
1024
1073
  },
1025
1074
  "wait": {
1026
1075
  "char": "w",
1027
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy operation, run this command again. To check the status of the deploy operation, run \"<%= config.bin %> project deploy report\".",
1076
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy, run \"<%= config.bin %> project deploy resume\". To check the status of the deploy, run \"<%= config.bin %> project deploy report\".",
1077
+ "exclusive": [
1078
+ "async"
1079
+ ],
1028
1080
  "name": "wait",
1029
1081
  "summary": "Number of minutes to wait for the command to complete and display results.",
1082
+ "default": "33 minutes",
1030
1083
  "hasDynamicHelp": true,
1031
1084
  "helpValue": "<minutes>",
1032
1085
  "multiple": false,
1033
1086
  "type": "option"
1034
1087
  },
1035
- "coverage-formatters": {
1036
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1037
- "helpGroup": "Test",
1038
- "name": "coverage-formatters",
1039
- "summary": "Format of the code coverage results.",
1040
- "hasDynamicHelp": false,
1041
- "multiple": true,
1042
- "options": [
1043
- "clover",
1044
- "cobertura",
1045
- "html-spa",
1046
- "html",
1047
- "json",
1048
- "json-summary",
1049
- "lcovonly",
1050
- "none",
1051
- "teamcity",
1052
- "text",
1053
- "text-summary"
1054
- ],
1055
- "type": "option"
1056
- },
1057
- "junit": {
1058
- "helpGroup": "Test",
1059
- "name": "junit",
1060
- "summary": "Output JUnit test results.",
1061
- "allowNo": false,
1062
- "type": "boolean"
1063
- },
1064
- "results-dir": {
1065
- "helpGroup": "Test",
1066
- "name": "results-dir",
1067
- "relationships": [
1068
- {
1069
- "type": "some",
1070
- "flags": [
1071
- "coverage-formatters",
1072
- "junit"
1073
- ]
1074
- }
1075
- ],
1076
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1088
+ "api-version": {
1089
+ "char": "a",
1090
+ "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1091
+ "name": "api-version",
1092
+ "summary": "Target API version for the deploy.",
1077
1093
  "hasDynamicHelp": false,
1078
1094
  "multiple": false,
1079
1095
  "type": "option"
@@ -1081,22 +1097,13 @@
1081
1097
  },
1082
1098
  "hasDynamicHelp": true,
1083
1099
  "hiddenAliases": [],
1084
- "id": "project:deploy:resume",
1100
+ "id": "project:deploy:quick",
1085
1101
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1086
1102
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1087
1103
  "pluginType": "core",
1088
1104
  "strict": true,
1089
- "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1105
+ "summary": "Quickly deploy a validated deployment to an org.",
1090
1106
  "enableJsonFlag": true,
1091
- "envVariablesSection": {
1092
- "header": "ENVIRONMENT VARIABLES",
1093
- "body": [
1094
- {
1095
- "name": "SF_USE_PROGRESS_BAR",
1096
- "description": "Set to false to disable the progress bar when running the metadata deploy command."
1097
- }
1098
- ]
1099
- },
1100
1107
  "errorCodes": {
1101
1108
  "header": "ERROR CODES",
1102
1109
  "body": [
@@ -1136,47 +1143,36 @@
1136
1143
  "commands",
1137
1144
  "project",
1138
1145
  "deploy",
1139
- "resume.js"
1146
+ "quick.js"
1140
1147
  ],
1141
1148
  "aliasPermutations": [
1142
- "deploy:metadata:resume",
1143
- "metadata:deploy:resume",
1144
- "metadata:resume:deploy",
1145
- "deploy:resume:metadata",
1146
- "resume:deploy:metadata",
1147
- "resume:metadata:deploy"
1149
+ "deploy:metadata:quick",
1150
+ "metadata:deploy:quick",
1151
+ "metadata:quick:deploy",
1152
+ "deploy:quick:metadata",
1153
+ "quick:deploy:metadata",
1154
+ "quick:metadata:deploy"
1148
1155
  ],
1149
1156
  "permutations": [
1150
- "project:deploy:resume",
1151
- "deploy:project:resume",
1152
- "deploy:resume:project",
1153
- "project:resume:deploy",
1154
- "resume:project:deploy",
1155
- "resume:deploy:project"
1157
+ "project:deploy:quick",
1158
+ "deploy:project:quick",
1159
+ "deploy:quick:project",
1160
+ "project:quick:deploy",
1161
+ "quick:project:deploy",
1162
+ "quick:deploy:project"
1156
1163
  ]
1157
1164
  },
1158
- "project:deploy:start": {
1165
+ "project:deploy:report": {
1159
1166
  "aliases": [
1160
- "deploy:metadata"
1167
+ "deploy:metadata:report"
1161
1168
  ],
1162
1169
  "args": {},
1163
1170
  "deprecateAliases": true,
1164
- "description": "You must run this command from within a project.\n\nMetadata components are deployed in source format by default. Deploy them in metadata format by specifying the --metadata-dir flag, which specifies the root directory or ZIP file that contains the metadata formatted files you want to deploy.\n\nIf your org allows source tracking, then this command tracks the changes in your source. Some orgs, such as production orgs, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo deploy multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.",
1171
+ "description": "Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation. If you specify the --wait flag, the command polls for the status every second until the timeout of --wait minutes. If you don't specify the --wait flag, the command simply checks and displays the status of the deploy; the command doesn't poll for the status.\n\nYou typically don't specify the --target-org flag because the cached job already references the org to which you deployed. But if you run this command on a computer different than the one from which you deployed, then you must specify the --target-org and it must point to the same org.\n\nThis command doesn't update source tracking information.",
1165
1172
  "examples": [
1166
- "Deploy local changes not in the org; uses your default org:\n<%= config.bin %> <%= command.id %>",
1167
- "Deploy all source files in the \"force-app\" directory to an org with alias \"my-scratch\"; show only concise output, in other words don't print a list of all the source that was deployed:\n<%= config.bin %> <%= command.id %> --source-dir force-app --target-org my-scratch --concise",
1168
- "Deploy all the Apex classes and custom objects that are in the \"force-app\" directory. The list views, layouts, etc, that are associated with the custom objects are also deployed. Both examples are equivalent:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes force-app/main/default/objects\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes --source-dir force-app/main/default/objects",
1169
- "Deploy all Apex classes that are in all package directories defined in the \"sfdx-project.json\" file:\n<%= config.bin %> <%= command.id %> --metadata ApexClass",
1170
- "Deploy a specific Apex class; ignore any conflicts between the local project and org (be careful with this flag, because it will overwrite the Apex class in the org if there are conflicts!):\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --ignore-conflicts",
1171
- "Deploy specific Apex classes that match a pattern; in this example, deploy Apex classes whose names contain the string \"MyApex\". Also ignore any deployment warnings (again, be careful with this flag! You typically want to see the warnings):\n<%= config.bin %> <%= command.id %> --metadata 'ApexClass:MyApex*' --ignore-warnings",
1172
- "Deploy a custom object called ExcitingObject that's in the SBQQ namespace:\nsf <%= command.id %> --metadata CustomObject:SBQQ__ExcitingObject",
1173
- "Deploy all custom objects in the SBQQ namespace by using a wildcard and quotes:\nsf <%= command.id %> --metadata 'CustomObject:SBQQ__*'",
1174
- "Deploy all custom objects and Apex classes found in all defined package directories (both examples are equivalent):\n<%= config.bin %> <%= command.id %> --metadata CustomObject ApexClass\n<%= config.bin %> <%= command.id %> --metadata CustomObject --metadata ApexClass",
1175
- "Deploy all Apex classes and a profile that has a space in its name:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --metadata \"Profile:My Profile\"",
1176
- "Deploy all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml",
1177
- "Run the tests that aren’t in any managed packages as part of a deployment:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests",
1178
- "Deploy all metadata formatted files in the \"MDAPI\" directory:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI",
1179
- "Deploy all metadata formatted files in the \"MDAPI\" directory; items listed in the MDAPI/destructiveChangesPre.xml and MDAPI/destructiveChangesPost.xml manifests are immediately eligible for deletion rather than stored in the Recycle Bin:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI --purge-on-delete"
1173
+ "Check the status using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1174
+ "Check the status of the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent",
1175
+ "Poll for the status using a job ID and target org:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2 --target-org me@my.org --wait 30"
1180
1176
  ],
1181
1177
  "flags": {
1182
1178
  "json": {
@@ -1194,229 +1190,32 @@
1194
1190
  "multiple": false,
1195
1191
  "type": "option"
1196
1192
  },
1197
- "api-version": {
1198
- "char": "a",
1199
- "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1200
- "name": "api-version",
1201
- "summary": "Target API version for the deploy.",
1202
- "hasDynamicHelp": false,
1203
- "multiple": false,
1204
- "type": "option"
1205
- },
1206
- "async": {
1207
- "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1208
- "exclusive": [
1209
- "wait"
1210
- ],
1211
- "name": "async",
1212
- "summary": "Run the command asynchronously.",
1213
- "allowNo": false,
1214
- "type": "boolean"
1215
- },
1216
- "concise": {
1217
- "exclusive": [
1218
- "verbose"
1219
- ],
1220
- "name": "concise",
1221
- "summary": "Show concise output of the deploy result.",
1222
- "allowNo": false,
1223
- "type": "boolean"
1224
- },
1225
- "dry-run": {
1226
- "name": "dry-run",
1227
- "summary": "Validate deploy and run Apex tests but don’t save to the org.",
1228
- "allowNo": false,
1229
- "type": "boolean"
1230
- },
1231
- "ignore-conflicts": {
1232
- "char": "c",
1233
- "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
1234
- "name": "ignore-conflicts",
1235
- "summary": "Ignore conflicts and deploy local files, even if they overwrite changes in the org.",
1236
- "allowNo": false,
1237
- "type": "boolean"
1238
- },
1239
- "ignore-errors": {
1240
- "char": "r",
1241
- "description": "Never use this flag when deploying to a production org. If you specify it, components without errors are deployed and components with errors are skipped, and could result in an inconsistent production org.",
1242
- "name": "ignore-errors",
1243
- "summary": "Ignore any errors and don’t roll back deployment.",
1244
- "allowNo": false,
1245
- "type": "boolean"
1246
- },
1247
- "ignore-warnings": {
1248
- "char": "g",
1249
- "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1250
- "name": "ignore-warnings",
1251
- "summary": "Ignore warnings and allow a deployment to complete successfully.",
1252
- "allowNo": false,
1253
- "type": "boolean"
1254
- },
1255
- "manifest": {
1256
- "char": "x",
1257
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1258
- "exclusive": [
1259
- "source-dir",
1260
- "metadata",
1261
- "metadata-dir"
1262
- ],
1263
- "helpGroup": "Source Format",
1264
- "name": "manifest",
1265
- "summary": "Full file path for manifest (package.xml) of components to deploy.",
1266
- "hasDynamicHelp": false,
1267
- "multiple": false,
1268
- "type": "option"
1269
- },
1270
- "metadata": {
1271
- "char": "m",
1272
- "exclusive": [
1273
- "manifest",
1274
- "source-dir",
1275
- "metadata-dir"
1276
- ],
1277
- "helpGroup": "Source Format",
1278
- "name": "metadata",
1279
- "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1280
- "hasDynamicHelp": false,
1281
- "multiple": true,
1282
- "type": "option"
1283
- },
1284
- "metadata-dir": {
1285
- "exclusive": [
1286
- "manifest",
1287
- "source-dir",
1288
- "metadata"
1289
- ],
1290
- "helpGroup": "Metadata API Format",
1291
- "name": "metadata-dir",
1292
- "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1293
- "hasDynamicHelp": false,
1294
- "multiple": false,
1295
- "type": "option"
1296
- },
1297
- "single-package": {
1298
- "dependsOn": [
1299
- "metadata-dir"
1300
- ],
1301
- "helpGroup": "Metadata API Format",
1302
- "name": "single-package",
1303
- "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1304
- "allowNo": false,
1305
- "type": "boolean"
1306
- },
1307
- "source-dir": {
1308
- "char": "d",
1309
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1310
- "exclusive": [
1311
- "manifest",
1312
- "metadata",
1313
- "metadata-dir"
1314
- ],
1315
- "helpGroup": "Source Format",
1316
- "name": "source-dir",
1317
- "summary": "Path to the local source files to deploy.",
1318
- "hasDynamicHelp": false,
1319
- "multiple": true,
1320
- "type": "option"
1321
- },
1322
1193
  "target-org": {
1323
1194
  "char": "o",
1324
1195
  "name": "target-org",
1325
1196
  "noCacheDefault": true,
1326
- "required": true,
1327
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1197
+ "summary": "Username or alias of the target org.",
1328
1198
  "hasDynamicHelp": true,
1329
1199
  "multiple": false,
1330
1200
  "type": "option"
1331
1201
  },
1332
- "tests": {
1333
- "char": "t",
1334
- "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
1335
- "helpGroup": "Test",
1336
- "name": "tests",
1337
- "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
1338
- "hasDynamicHelp": false,
1339
- "multiple": true,
1340
- "type": "option"
1341
- },
1342
- "test-level": {
1343
- "char": "l",
1344
- "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\n If you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see [Running Tests in a Deployment](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
1345
- "helpGroup": "Test",
1346
- "name": "test-level",
1347
- "summary": "Deployment Apex testing level.",
1202
+ "job-id": {
1203
+ "char": "i",
1204
+ "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1205
+ "name": "job-id",
1206
+ "summary": "Job ID of the deploy operation you want to check the status of.",
1348
1207
  "hasDynamicHelp": false,
1349
1208
  "multiple": false,
1350
- "options": [
1351
- "NoTestRun",
1352
- "RunSpecifiedTests",
1353
- "RunLocalTests",
1354
- "RunAllTestsInOrg"
1355
- ],
1356
- "type": "option"
1357
- },
1358
- "verbose": {
1359
- "exclusive": [
1360
- "concise"
1361
- ],
1362
- "name": "verbose",
1363
- "summary": "Show verbose output of the deploy result.",
1364
- "allowNo": false,
1365
- "type": "boolean"
1366
- },
1367
- "wait": {
1368
- "char": "w",
1369
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1370
- "exclusive": [
1371
- "async"
1372
- ],
1373
- "name": "wait",
1374
- "summary": "Number of minutes to wait for command to complete and display results.",
1375
- "hasDynamicHelp": true,
1376
- "helpValue": "<minutes>",
1377
- "multiple": false,
1378
1209
  "type": "option"
1379
1210
  },
1380
- "purge-on-delete": {
1381
- "helpGroup": "Delete",
1382
- "name": "purge-on-delete",
1383
- "relationships": [
1384
- {
1385
- "type": "some",
1386
- "flags": [
1387
- "pre-destructive-changes",
1388
- "manifest",
1389
- "metadata-dir",
1390
- "post-destructive-changes"
1391
- ]
1392
- }
1393
- ],
1394
- "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1211
+ "use-most-recent": {
1212
+ "char": "r",
1213
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1214
+ "name": "use-most-recent",
1215
+ "summary": "Use the job ID of the most recent deploy operation.",
1395
1216
  "allowNo": false,
1396
1217
  "type": "boolean"
1397
1218
  },
1398
- "pre-destructive-changes": {
1399
- "dependsOn": [
1400
- "manifest"
1401
- ],
1402
- "helpGroup": "Delete",
1403
- "name": "pre-destructive-changes",
1404
- "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy.",
1405
- "hasDynamicHelp": false,
1406
- "multiple": false,
1407
- "type": "option"
1408
- },
1409
- "post-destructive-changes": {
1410
- "dependsOn": [
1411
- "manifest"
1412
- ],
1413
- "helpGroup": "Delete",
1414
- "name": "post-destructive-changes",
1415
- "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1416
- "hasDynamicHelp": false,
1417
- "multiple": false,
1418
- "type": "option"
1419
- },
1420
1219
  "coverage-formatters": {
1421
1220
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1422
1221
  "helpGroup": "Test",
@@ -1462,110 +1261,62 @@
1462
1261
  "hasDynamicHelp": false,
1463
1262
  "multiple": false,
1464
1263
  "type": "option"
1264
+ },
1265
+ "wait": {
1266
+ "char": "w",
1267
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1268
+ "name": "wait",
1269
+ "summary": "Number of minutes to wait for command to complete and display results.",
1270
+ "hasDynamicHelp": true,
1271
+ "helpValue": "<minutes>",
1272
+ "multiple": false,
1273
+ "type": "option"
1465
1274
  }
1466
1275
  },
1467
1276
  "hasDynamicHelp": true,
1468
1277
  "hiddenAliases": [],
1469
- "id": "project:deploy:start",
1278
+ "id": "project:deploy:report",
1470
1279
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1471
1280
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1472
1281
  "pluginType": "core",
1473
1282
  "strict": true,
1474
- "summary": "Deploy metadata to an org from your local project.",
1283
+ "summary": "Check or poll for the status of a deploy operation.",
1475
1284
  "enableJsonFlag": true,
1476
- "configurationVariablesSection": {
1477
- "header": "CONFIGURATION VARIABLES",
1478
- "body": [
1479
- {
1480
- "name": "target-org",
1481
- "description": "Username or alias of the org that all commands run against by default. (sf only)"
1482
- },
1483
- {
1484
- "name": "org-api-version",
1485
- "description": "API version of your project. Default: API version of your Dev Hub org."
1486
- }
1487
- ]
1488
- },
1489
- "envVariablesSection": {
1490
- "header": "ENVIRONMENT VARIABLES",
1491
- "body": [
1492
- {
1493
- "name": "SF_TARGET_ORG",
1494
- "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1495
- },
1496
- {
1497
- "name": "SF_USE_PROGRESS_BAR",
1498
- "description": "Set to false to disable the progress bar when running the metadata deploy command."
1499
- }
1500
- ]
1501
- },
1502
- "errorCodes": {
1503
- "header": "ERROR CODES",
1504
- "body": [
1505
- {
1506
- "name": "Succeeded (0)",
1507
- "description": "The deploy succeeded."
1508
- },
1509
- {
1510
- "name": "Canceled (1)",
1511
- "description": "The deploy was canceled."
1512
- },
1513
- {
1514
- "name": "Failed (1)",
1515
- "description": "The deploy failed."
1516
- },
1517
- {
1518
- "name": "SucceededPartial (68)",
1519
- "description": "The deploy partially succeeded."
1520
- },
1521
- {
1522
- "name": "InProgress (69)",
1523
- "description": "The deploy is in progress."
1524
- },
1525
- {
1526
- "name": "Pending (69)",
1527
- "description": "The deploy is pending."
1528
- },
1529
- {
1530
- "name": "Canceling (69)",
1531
- "description": "The deploy is being canceled."
1532
- }
1533
- ]
1534
- },
1535
1285
  "isESM": true,
1536
1286
  "relativePath": [
1537
1287
  "lib",
1538
1288
  "commands",
1539
1289
  "project",
1540
1290
  "deploy",
1541
- "start.js"
1291
+ "report.js"
1542
1292
  ],
1543
1293
  "aliasPermutations": [
1544
- "deploy:metadata",
1545
- "metadata:deploy"
1294
+ "deploy:metadata:report",
1295
+ "metadata:deploy:report",
1296
+ "metadata:report:deploy",
1297
+ "deploy:report:metadata",
1298
+ "report:deploy:metadata",
1299
+ "report:metadata:deploy"
1546
1300
  ],
1547
1301
  "permutations": [
1548
- "project:deploy:start",
1549
- "deploy:project:start",
1550
- "deploy:start:project",
1551
- "project:start:deploy",
1552
- "start:project:deploy",
1553
- "start:deploy:project"
1302
+ "project:deploy:report",
1303
+ "deploy:project:report",
1304
+ "deploy:report:project",
1305
+ "project:report:deploy",
1306
+ "report:project:deploy",
1307
+ "report:deploy:project"
1554
1308
  ]
1555
1309
  },
1556
- "project:deploy:validate": {
1310
+ "project:deploy:resume": {
1557
1311
  "aliases": [
1558
- "deploy:metadata:validate"
1312
+ "deploy:metadata:resume"
1559
1313
  ],
1560
1314
  "args": {},
1561
1315
  "deprecateAliases": true,
1562
- "description": "Use this command to verify whether a deployment will succeed without actually deploying the metadata to your org. This command is similar to \"<%= config.bin %> project deploy start\", except you're required to run Apex tests, and the command returns a job ID rather than executing the deployment. If the validation succeeds, then you pass this job ID to the \"<%= config.bin %> project deploy quick\" command to actually deploy the metadata. This quick deploy takes less time because it skips running Apex tests. The job ID is valid for 10 days from when you started the validation. Validating first is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nYou must run this command from within a project.\n\nThis command doesn't support source-tracking. When you quick deploy with the resulting job ID, the source you deploy overwrites the corresponding metadata in your org.\n\nTo validate the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. If you want to validate a deployment with tests on a sandbox, use \"<%= config.bin %> project deploy start --dry-run --test-level RunLocalTests\" instead.",
1316
+ "description": "Use this command to resume watching a deploy operation if the original command times out or you specified the --async flag. Deploy operations include standard deploys, quick deploys, deploy validations, and deploy cancellations. This command doesn't resume the original operation itself, because the operation always continues after you've started it, regardless of whether you're watching it or not. When the deploy completes, source tracking information is updated as needed.\n\nRun this command by either passing it a job ID or specifying the --use-most-recent flag to use the job ID of the most recent deploy operation.",
1563
1317
  "examples": [
1564
- "NOTE: These examples focus on validating large deployments. See the help for \"<%= config.bin %> project deploy start\" for examples of deploying smaller sets of metadata which you can also use to validate.",
1565
- "Validate the deployment of all source files in the \"force-app\" directory to the default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
1566
- "Validate the deployment of all source files in two directories: \"force-app\" and \"force-app-utils\":\n<%= config.bin %> <%= command.id %> --source-dir force-app --source-dir force-app-utils",
1567
- "Asynchronously validate the deployment and run all tests in the org with alias \"my-prod-org\"; command immediately returns the job ID:\n<%= config.bin %> <%= command.id %> --source-dir force-app --async --test-level RunAllTestsInOrg --target-org my-prod-org",
1568
- "Validate the deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
1318
+ "Resume watching a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1319
+ "Resume watching the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
1569
1320
  ],
1570
1321
  "flags": {
1571
1322
  "json": {
@@ -1583,126 +1334,44 @@
1583
1334
  "multiple": false,
1584
1335
  "type": "option"
1585
1336
  },
1586
- "api-version": {
1587
- "char": "a",
1588
- "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1589
- "name": "api-version",
1590
- "summary": "Target API version for the validation.",
1591
- "hasDynamicHelp": false,
1592
- "multiple": false,
1593
- "type": "option"
1594
- },
1595
- "async": {
1596
- "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
1597
- "name": "async",
1598
- "summary": "Run the command asynchronously.",
1599
- "allowNo": false,
1600
- "type": "boolean"
1601
- },
1602
1337
  "concise": {
1603
1338
  "exclusive": [
1604
1339
  "verbose"
1605
1340
  ],
1606
1341
  "name": "concise",
1607
- "summary": "Show concise output of the validation result.",
1342
+ "summary": "Show concise output of the deploy operation result.",
1608
1343
  "allowNo": false,
1609
1344
  "type": "boolean"
1610
1345
  },
1611
- "manifest": {
1612
- "char": "x",
1613
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1614
- "helpGroup": "Source Format",
1615
- "name": "manifest",
1616
- "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
1617
- "hasDynamicHelp": false,
1618
- "multiple": false,
1619
- "type": "option"
1620
- },
1621
- "metadata": {
1622
- "char": "m",
1623
- "helpGroup": "Source Format",
1624
- "name": "metadata",
1625
- "summary": "Metadata component names to validate for deployment.",
1626
- "hasDynamicHelp": false,
1627
- "multiple": true,
1628
- "type": "option"
1629
- },
1630
- "source-dir": {
1631
- "char": "d",
1632
- "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1633
- "helpGroup": "Source Format",
1634
- "name": "source-dir",
1635
- "summary": "Path to the local source files to validate for deployment.",
1636
- "hasDynamicHelp": false,
1637
- "multiple": true,
1638
- "type": "option"
1639
- },
1640
- "metadata-dir": {
1641
- "helpGroup": "Metadata API Format",
1642
- "name": "metadata-dir",
1643
- "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1346
+ "job-id": {
1347
+ "char": "i",
1348
+ "description": "These commands return a job ID if they time out or you specified the --async flag:\n\n- <%= config.bin %> project deploy start\n- <%= config.bin %> project deploy validate\n- <%= config.bin %> project deploy quick\n- <%= config.bin %> project deploy cancel\n\nThe job ID is valid for 10 days from when you started the deploy operation.",
1349
+ "name": "job-id",
1350
+ "summary": "Job ID of the deploy operation you want to resume.",
1644
1351
  "hasDynamicHelp": false,
1645
1352
  "multiple": false,
1646
1353
  "type": "option"
1647
1354
  },
1648
- "single-package": {
1649
- "dependsOn": [
1650
- "metadata-dir"
1651
- ],
1652
- "helpGroup": "Metadata API Format",
1653
- "name": "single-package",
1654
- "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1355
+ "use-most-recent": {
1356
+ "char": "r",
1357
+ "description": "For performance reasons, this flag uses job IDs for deploy operations that started only in the past 3 days or less. If your most recent operation was more than 3 days ago, this flag won't find a job ID.",
1358
+ "name": "use-most-recent",
1359
+ "summary": "Use the job ID of the most recent deploy operation.",
1655
1360
  "allowNo": false,
1656
1361
  "type": "boolean"
1657
1362
  },
1658
- "target-org": {
1659
- "char": "o",
1660
- "name": "target-org",
1661
- "noCacheDefault": true,
1662
- "required": true,
1663
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1664
- "hasDynamicHelp": true,
1665
- "multiple": false,
1666
- "type": "option"
1667
- },
1668
- "tests": {
1669
- "char": "t",
1670
- "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
1671
- "helpGroup": "Test",
1672
- "name": "tests",
1673
- "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
1674
- "hasDynamicHelp": false,
1675
- "multiple": true,
1676
- "type": "option"
1677
- },
1678
- "test-level": {
1679
- "char": "l",
1680
- "description": "Valid values are:\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.",
1681
- "helpGroup": "Test",
1682
- "name": "test-level",
1683
- "summary": "Deployment Apex testing level.",
1684
- "default": "RunLocalTests",
1685
- "hasDynamicHelp": false,
1686
- "multiple": false,
1687
- "options": [
1688
- "RunAllTestsInOrg",
1689
- "RunLocalTests",
1690
- "RunSpecifiedTests"
1691
- ],
1692
- "type": "option"
1693
- },
1694
1363
  "verbose": {
1695
1364
  "exclusive": [
1696
1365
  "concise"
1697
1366
  ],
1698
1367
  "name": "verbose",
1699
- "summary": "Show verbose output of the validation result.",
1368
+ "summary": "Show verbose output of the deploy operation result.",
1700
1369
  "allowNo": false,
1701
1370
  "type": "boolean"
1702
1371
  },
1703
1372
  "wait": {
1704
1373
  "char": "w",
1705
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
1374
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you. To resume watching the deploy operation, run this command again. To check the status of the deploy operation, run \"<%= config.bin %> project deploy report\".",
1706
1375
  "name": "wait",
1707
1376
  "summary": "Number of minutes to wait for the command to complete and display results.",
1708
1377
  "hasDynamicHelp": true,
@@ -1710,14 +1379,6 @@
1710
1379
  "multiple": false,
1711
1380
  "type": "option"
1712
1381
  },
1713
- "ignore-warnings": {
1714
- "char": "g",
1715
- "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1716
- "name": "ignore-warnings",
1717
- "summary": "Ignore warnings and allow a deployment to complete successfully.",
1718
- "allowNo": false,
1719
- "type": "boolean"
1720
- },
1721
1382
  "coverage-formatters": {
1722
1383
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1723
1384
  "helpGroup": "Test",
@@ -1763,78 +1424,20 @@
1763
1424
  "hasDynamicHelp": false,
1764
1425
  "multiple": false,
1765
1426
  "type": "option"
1766
- },
1767
- "purge-on-delete": {
1768
- "dependsOn": [
1769
- "manifest"
1770
- ],
1771
- "helpGroup": "Delete",
1772
- "name": "purge-on-delete",
1773
- "relationships": [
1774
- {
1775
- "type": "some",
1776
- "flags": [
1777
- "pre-destructive-changes",
1778
- "post-destructive-changes"
1779
- ]
1780
- }
1781
- ],
1782
- "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1783
- "allowNo": false,
1784
- "type": "boolean"
1785
- },
1786
- "pre-destructive-changes": {
1787
- "dependsOn": [
1788
- "manifest"
1789
- ],
1790
- "helpGroup": "Delete",
1791
- "name": "pre-destructive-changes",
1792
- "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
1793
- "hasDynamicHelp": false,
1794
- "multiple": false,
1795
- "type": "option"
1796
- },
1797
- "post-destructive-changes": {
1798
- "dependsOn": [
1799
- "manifest"
1800
- ],
1801
- "helpGroup": "Delete",
1802
- "name": "post-destructive-changes",
1803
- "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1804
- "hasDynamicHelp": false,
1805
- "multiple": false,
1806
- "type": "option"
1807
1427
  }
1808
1428
  },
1809
1429
  "hasDynamicHelp": true,
1810
1430
  "hiddenAliases": [],
1811
- "id": "project:deploy:validate",
1431
+ "id": "project:deploy:resume",
1812
1432
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1813
1433
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1814
1434
  "pluginType": "core",
1815
1435
  "strict": true,
1816
- "summary": "Validate a metadata deployment without actually executing it.",
1436
+ "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1817
1437
  "enableJsonFlag": true,
1818
- "configurationVariablesSection": {
1819
- "header": "CONFIGURATION VARIABLES",
1820
- "body": [
1821
- {
1822
- "name": "target-org",
1823
- "description": "Username or alias of the org that all commands run against by default. (sf only)"
1824
- },
1825
- {
1826
- "name": "org-api-version",
1827
- "description": "API version of your project. Default: API version of your Dev Hub org."
1828
- }
1829
- ]
1830
- },
1831
1438
  "envVariablesSection": {
1832
1439
  "header": "ENVIRONMENT VARIABLES",
1833
1440
  "body": [
1834
- {
1835
- "name": "SF_TARGET_ORG",
1836
- "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1837
- },
1838
1441
  {
1839
1442
  "name": "SF_USE_PROGRESS_BAR",
1840
1443
  "description": "Set to false to disable the progress bar when running the metadata deploy command."
@@ -1880,37 +1483,47 @@
1880
1483
  "commands",
1881
1484
  "project",
1882
1485
  "deploy",
1883
- "validate.js"
1486
+ "resume.js"
1884
1487
  ],
1885
1488
  "aliasPermutations": [
1886
- "deploy:metadata:validate",
1887
- "metadata:deploy:validate",
1888
- "metadata:validate:deploy",
1889
- "deploy:validate:metadata",
1890
- "validate:deploy:metadata",
1891
- "validate:metadata:deploy"
1489
+ "deploy:metadata:resume",
1490
+ "metadata:deploy:resume",
1491
+ "metadata:resume:deploy",
1492
+ "deploy:resume:metadata",
1493
+ "resume:deploy:metadata",
1494
+ "resume:metadata:deploy"
1892
1495
  ],
1893
1496
  "permutations": [
1894
- "project:deploy:validate",
1895
- "deploy:project:validate",
1896
- "deploy:validate:project",
1897
- "project:validate:deploy",
1898
- "validate:project:deploy",
1899
- "validate:deploy:project"
1497
+ "project:deploy:resume",
1498
+ "deploy:project:resume",
1499
+ "deploy:resume:project",
1500
+ "project:resume:deploy",
1501
+ "resume:project:deploy",
1502
+ "resume:deploy:project"
1900
1503
  ]
1901
1504
  },
1902
- "project:delete:source": {
1505
+ "project:deploy:start": {
1903
1506
  "aliases": [
1904
- "force:source:delete"
1507
+ "deploy:metadata"
1905
1508
  ],
1906
1509
  "args": {},
1907
1510
  "deprecateAliases": true,
1908
- "description": "Use this command to delete components from orgs that don’t have source tracking. To remove deleted items from orgs that have source tracking enabled, \"<%= config.bin %> project deploy start\".\n\nWhen you run this command, both the local source file and the metadata component in the org are deleted.\n\nTo delete multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.",
1511
+ "description": "You must run this command from within a project.\n\nMetadata components are deployed in source format by default. Deploy them in metadata format by specifying the --metadata-dir flag, which specifies the root directory or ZIP file that contains the metadata formatted files you want to deploy.\n\nIf your org allows source tracking, then this command tracks the changes in your source. Some orgs, such as production orgs, never allow source tracking. Source tracking is enabled by default on scratch and sandbox orgs; you can disable source tracking when you create the orgs by specifying the --no-track-source flag on the \"<%= config.bin %> org create scratch|sandbox\" commands.\n\nTo deploy multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.",
1909
1512
  "examples": [
1910
- "Delete all local Apex source files and all Apex classes from the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
1911
- "Delete a specific Apex class and a Profile that has a space in it from your default org; don't prompt for confirmation:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyFabulousApexClass --metadata \"Profile: My Profile\" --no-prompt",
1912
- "Run the tests that aren’t in any managed packages as part of the deletion; if the delete succeeds, and the org has source-tracking enabled, update the source tracking information:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests --track-source",
1913
- "Delete the Apex source files in a directory and the corresponding components from your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes"
1513
+ "Deploy local changes not in the org; uses your default org:\n<%= config.bin %> <%= command.id %>",
1514
+ "Deploy all source files in the \"force-app\" directory to an org with alias \"my-scratch\"; show only concise output, in other words don't print a list of all the source that was deployed:\n<%= config.bin %> <%= command.id %> --source-dir force-app --target-org my-scratch --concise",
1515
+ "Deploy all the Apex classes and custom objects that are in the \"force-app\" directory. The list views, layouts, etc, that are associated with the custom objects are also deployed. Both examples are equivalent:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes force-app/main/default/objects\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes --source-dir force-app/main/default/objects",
1516
+ "Deploy all Apex classes that are in all package directories defined in the \"sfdx-project.json\" file:\n<%= config.bin %> <%= command.id %> --metadata ApexClass",
1517
+ "Deploy a specific Apex class; ignore any conflicts between the local project and org (be careful with this flag, because it will overwrite the Apex class in the org if there are conflicts!):\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --ignore-conflicts",
1518
+ "Deploy specific Apex classes that match a pattern; in this example, deploy Apex classes whose names contain the string \"MyApex\". Also ignore any deployment warnings (again, be careful with this flag! You typically want to see the warnings):\n<%= config.bin %> <%= command.id %> --metadata 'ApexClass:MyApex*' --ignore-warnings",
1519
+ "Deploy a custom object called ExcitingObject that's in the SBQQ namespace:\nsf <%= command.id %> --metadata CustomObject:SBQQ__ExcitingObject",
1520
+ "Deploy all custom objects in the SBQQ namespace by using a wildcard and quotes:\nsf <%= command.id %> --metadata 'CustomObject:SBQQ__*'",
1521
+ "Deploy all custom objects and Apex classes found in all defined package directories (both examples are equivalent):\n<%= config.bin %> <%= command.id %> --metadata CustomObject ApexClass\n<%= config.bin %> <%= command.id %> --metadata CustomObject --metadata ApexClass",
1522
+ "Deploy all Apex classes and a profile that has a space in its name:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --metadata \"Profile:My Profile\"",
1523
+ "Deploy all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml",
1524
+ "Run the tests that aren’t in any managed packages as part of a deployment:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests",
1525
+ "Deploy all metadata formatted files in the \"MDAPI\" directory:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI",
1526
+ "Deploy all metadata formatted files in the \"MDAPI\" directory; items listed in the MDAPI/destructiveChangesPre.xml and MDAPI/destructiveChangesPost.xml manifests are immediately eligible for deletion rather than stored in the Recycle Bin:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI --purge-on-delete"
1914
1527
  ],
1915
1528
  "flags": {
1916
1529
  "json": {
@@ -1929,63 +1542,142 @@
1929
1542
  "type": "option"
1930
1543
  },
1931
1544
  "api-version": {
1932
- "aliases": [
1933
- "apiversion"
1934
- ],
1935
- "deprecateAliases": true,
1936
- "description": "Override the api version used for api requests made by this command",
1545
+ "char": "a",
1546
+ "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
1937
1547
  "name": "api-version",
1548
+ "summary": "Target API version for the deploy.",
1938
1549
  "hasDynamicHelp": false,
1939
1550
  "multiple": false,
1940
1551
  "type": "option"
1941
1552
  },
1942
- "loglevel": {
1943
- "deprecated": {
1944
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
1945
- },
1946
- "hidden": true,
1947
- "name": "loglevel",
1553
+ "async": {
1554
+ "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1555
+ "exclusive": [
1556
+ "wait"
1557
+ ],
1558
+ "name": "async",
1559
+ "summary": "Run the command asynchronously.",
1560
+ "allowNo": false,
1561
+ "type": "boolean"
1562
+ },
1563
+ "concise": {
1564
+ "exclusive": [
1565
+ "verbose"
1566
+ ],
1567
+ "name": "concise",
1568
+ "summary": "Show concise output of the deploy result.",
1569
+ "allowNo": false,
1570
+ "type": "boolean"
1571
+ },
1572
+ "dry-run": {
1573
+ "name": "dry-run",
1574
+ "summary": "Validate deploy and run Apex tests but don’t save to the org.",
1575
+ "allowNo": false,
1576
+ "type": "boolean"
1577
+ },
1578
+ "ignore-conflicts": {
1579
+ "char": "c",
1580
+ "description": "This flag applies only to orgs that allow source tracking. It has no effect on orgs that don't allow it, such as production orgs.",
1581
+ "name": "ignore-conflicts",
1582
+ "summary": "Ignore conflicts and deploy local files, even if they overwrite changes in the org.",
1583
+ "allowNo": false,
1584
+ "type": "boolean"
1585
+ },
1586
+ "ignore-errors": {
1587
+ "char": "r",
1588
+ "description": "Never use this flag when deploying to a production org. If you specify it, components without errors are deployed and components with errors are skipped, and could result in an inconsistent production org.",
1589
+ "name": "ignore-errors",
1590
+ "summary": "Ignore any errors and don’t roll back deployment.",
1591
+ "allowNo": false,
1592
+ "type": "boolean"
1593
+ },
1594
+ "ignore-warnings": {
1595
+ "char": "g",
1596
+ "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
1597
+ "name": "ignore-warnings",
1598
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
1599
+ "allowNo": false,
1600
+ "type": "boolean"
1601
+ },
1602
+ "manifest": {
1603
+ "char": "x",
1604
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1605
+ "exclusive": [
1606
+ "source-dir",
1607
+ "metadata",
1608
+ "metadata-dir"
1609
+ ],
1610
+ "helpGroup": "Source Format",
1611
+ "name": "manifest",
1612
+ "summary": "Full file path for manifest (package.xml) of components to deploy.",
1948
1613
  "hasDynamicHelp": false,
1949
1614
  "multiple": false,
1950
1615
  "type": "option"
1951
1616
  },
1952
- "target-org": {
1953
- "aliases": [
1954
- "targetusername",
1955
- "u"
1617
+ "metadata": {
1618
+ "char": "m",
1619
+ "exclusive": [
1620
+ "manifest",
1621
+ "source-dir",
1622
+ "metadata-dir"
1956
1623
  ],
1957
- "char": "o",
1958
- "deprecateAliases": true,
1959
- "name": "target-org",
1960
- "noCacheDefault": true,
1961
- "required": true,
1962
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1963
- "hasDynamicHelp": true,
1624
+ "helpGroup": "Source Format",
1625
+ "name": "metadata",
1626
+ "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1627
+ "hasDynamicHelp": false,
1628
+ "multiple": true,
1629
+ "type": "option"
1630
+ },
1631
+ "metadata-dir": {
1632
+ "exclusive": [
1633
+ "manifest",
1634
+ "source-dir",
1635
+ "metadata"
1636
+ ],
1637
+ "helpGroup": "Metadata API Format",
1638
+ "name": "metadata-dir",
1639
+ "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1640
+ "hasDynamicHelp": false,
1964
1641
  "multiple": false,
1965
1642
  "type": "option"
1966
1643
  },
1967
- "check-only": {
1968
- "aliases": [
1969
- "checkonly"
1644
+ "single-package": {
1645
+ "dependsOn": [
1646
+ "metadata-dir"
1970
1647
  ],
1971
- "char": "c",
1972
- "deprecateAliases": true,
1973
- "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only parameter to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
1974
- "name": "check-only",
1975
- "summary": "Validate delete command but don't delete anything from the org or the local project.",
1648
+ "helpGroup": "Metadata API Format",
1649
+ "name": "single-package",
1650
+ "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1976
1651
  "allowNo": false,
1977
1652
  "type": "boolean"
1978
1653
  },
1979
- "wait": {
1980
- "char": "w",
1981
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
1982
- "name": "wait",
1983
- "summary": "Number of minutes to wait for the command to finish.",
1654
+ "source-dir": {
1655
+ "char": "d",
1656
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1657
+ "exclusive": [
1658
+ "manifest",
1659
+ "metadata",
1660
+ "metadata-dir"
1661
+ ],
1662
+ "helpGroup": "Source Format",
1663
+ "name": "source-dir",
1664
+ "summary": "Path to the local source files to deploy.",
1665
+ "hasDynamicHelp": false,
1666
+ "multiple": true,
1667
+ "type": "option"
1668
+ },
1669
+ "target-org": {
1670
+ "char": "o",
1671
+ "name": "target-org",
1672
+ "noCacheDefault": true,
1673
+ "required": true,
1674
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1984
1675
  "hasDynamicHelp": true,
1985
1676
  "multiple": false,
1986
1677
  "type": "option"
1987
1678
  },
1988
1679
  "tests": {
1680
+ "char": "t",
1989
1681
  "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
1990
1682
  "helpGroup": "Test",
1991
1683
  "name": "tests",
@@ -1995,12 +1687,8 @@
1995
1687
  "type": "option"
1996
1688
  },
1997
1689
  "test-level": {
1998
- "aliases": [
1999
- "testlevel"
2000
- ],
2001
1690
  "char": "l",
2002
- "deprecateAliases": true,
2003
- "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
1691
+ "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\n If you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see [Running Tests in a Deployment](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
2004
1692
  "helpGroup": "Test",
2005
1693
  "name": "test-level",
2006
1694
  "summary": "Deployment Apex testing level.",
@@ -2014,120 +1702,217 @@
2014
1702
  ],
2015
1703
  "type": "option"
2016
1704
  },
2017
- "no-prompt": {
2018
- "aliases": [
2019
- "noprompt"
1705
+ "verbose": {
1706
+ "exclusive": [
1707
+ "concise"
2020
1708
  ],
2021
- "char": "r",
2022
- "deprecateAliases": true,
2023
- "name": "no-prompt",
2024
- "summary": "Don't prompt for delete confirmation.",
1709
+ "name": "verbose",
1710
+ "summary": "Show verbose output of the deploy result.",
2025
1711
  "allowNo": false,
2026
1712
  "type": "boolean"
2027
1713
  },
2028
- "metadata": {
2029
- "char": "m",
2030
- "description": "If you specify this parameter, don’t specify --source-dir.",
2031
- "name": "metadata",
2032
- "summary": "Metadata components to delete.",
2033
- "delimiter": ",",
2034
- "hasDynamicHelp": false,
2035
- "multiple": true,
2036
- "type": "option"
2037
- },
2038
- "source-dir": {
2039
- "aliases": [
2040
- "sourcepath"
1714
+ "wait": {
1715
+ "char": "w",
1716
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume the deployment, run \"<%= config.bin %> project deploy resume\". To check the status of the deployment, run \"<%= config.bin %> project deploy report\".",
1717
+ "exclusive": [
1718
+ "async"
2041
1719
  ],
2042
- "char": "p",
2043
- "deprecateAliases": true,
2044
- "description": "The supplied paths can be a single file (in which case the operation is applied to only one file) or a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this parameter, don’t specify --metadata.",
2045
- "name": "source-dir",
2046
- "summary": "Source file paths to delete.",
2047
- "delimiter": ",",
2048
- "hasDynamicHelp": false,
2049
- "multiple": true,
1720
+ "name": "wait",
1721
+ "summary": "Number of minutes to wait for command to complete and display results.",
1722
+ "hasDynamicHelp": true,
1723
+ "helpValue": "<minutes>",
1724
+ "multiple": false,
2050
1725
  "type": "option"
2051
1726
  },
2052
- "track-source": {
2053
- "aliases": [
2054
- "tracksource"
2055
- ],
2056
- "char": "t",
2057
- "deprecateAliases": true,
2058
- "exclusive": [
2059
- "check-only"
2060
- ],
2061
- "name": "track-source",
2062
- "summary": "If the delete succeeds, update the source tracking information.",
1727
+ "purge-on-delete": {
1728
+ "helpGroup": "Delete",
1729
+ "name": "purge-on-delete",
1730
+ "relationships": [
1731
+ {
1732
+ "type": "some",
1733
+ "flags": [
1734
+ "pre-destructive-changes",
1735
+ "manifest",
1736
+ "metadata-dir",
1737
+ "post-destructive-changes"
1738
+ ]
1739
+ }
1740
+ ],
1741
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
2063
1742
  "allowNo": false,
2064
1743
  "type": "boolean"
2065
1744
  },
2066
- "force-overwrite": {
2067
- "aliases": [
2068
- "forceoverwrite"
1745
+ "pre-destructive-changes": {
1746
+ "dependsOn": [
1747
+ "manifest"
2069
1748
  ],
2070
- "char": "f",
1749
+ "helpGroup": "Delete",
1750
+ "name": "pre-destructive-changes",
1751
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy.",
1752
+ "hasDynamicHelp": false,
1753
+ "multiple": false,
1754
+ "type": "option"
1755
+ },
1756
+ "post-destructive-changes": {
2071
1757
  "dependsOn": [
2072
- "track-source"
1758
+ "manifest"
2073
1759
  ],
2074
- "deprecateAliases": true,
2075
- "name": "force-overwrite",
2076
- "summary": "Ignore conflict warnings and overwrite changes to the org.",
2077
- "allowNo": false,
2078
- "type": "boolean"
1760
+ "helpGroup": "Delete",
1761
+ "name": "post-destructive-changes",
1762
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1763
+ "hasDynamicHelp": false,
1764
+ "multiple": false,
1765
+ "type": "option"
2079
1766
  },
2080
- "verbose": {
2081
- "name": "verbose",
2082
- "summary": "Verbose output of the delete result.",
1767
+ "coverage-formatters": {
1768
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1769
+ "helpGroup": "Test",
1770
+ "name": "coverage-formatters",
1771
+ "summary": "Format of the code coverage results.",
1772
+ "hasDynamicHelp": false,
1773
+ "multiple": true,
1774
+ "options": [
1775
+ "clover",
1776
+ "cobertura",
1777
+ "html-spa",
1778
+ "html",
1779
+ "json",
1780
+ "json-summary",
1781
+ "lcovonly",
1782
+ "none",
1783
+ "teamcity",
1784
+ "text",
1785
+ "text-summary"
1786
+ ],
1787
+ "type": "option"
1788
+ },
1789
+ "junit": {
1790
+ "helpGroup": "Test",
1791
+ "name": "junit",
1792
+ "summary": "Output JUnit test results.",
2083
1793
  "allowNo": false,
2084
1794
  "type": "boolean"
1795
+ },
1796
+ "results-dir": {
1797
+ "helpGroup": "Test",
1798
+ "name": "results-dir",
1799
+ "relationships": [
1800
+ {
1801
+ "type": "some",
1802
+ "flags": [
1803
+ "coverage-formatters",
1804
+ "junit"
1805
+ ]
1806
+ }
1807
+ ],
1808
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1809
+ "hasDynamicHelp": false,
1810
+ "multiple": false,
1811
+ "type": "option"
2085
1812
  }
2086
1813
  },
2087
1814
  "hasDynamicHelp": true,
2088
1815
  "hiddenAliases": [],
2089
- "id": "project:delete:source",
1816
+ "id": "project:deploy:start",
2090
1817
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2091
1818
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2092
1819
  "pluginType": "core",
2093
1820
  "strict": true,
2094
- "summary": "Delete source from your project and from a non-source-tracked org.",
1821
+ "summary": "Deploy metadata to an org from your local project.",
2095
1822
  "enableJsonFlag": true,
2096
- "requiresProject": true,
1823
+ "configurationVariablesSection": {
1824
+ "header": "CONFIGURATION VARIABLES",
1825
+ "body": [
1826
+ {
1827
+ "name": "target-org",
1828
+ "description": "Username or alias of the org that all commands run against by default. (sf only)"
1829
+ },
1830
+ {
1831
+ "name": "org-api-version",
1832
+ "description": "API version of your project. Default: API version of your Dev Hub org."
1833
+ }
1834
+ ]
1835
+ },
1836
+ "envVariablesSection": {
1837
+ "header": "ENVIRONMENT VARIABLES",
1838
+ "body": [
1839
+ {
1840
+ "name": "SF_TARGET_ORG",
1841
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1842
+ },
1843
+ {
1844
+ "name": "SF_USE_PROGRESS_BAR",
1845
+ "description": "Set to false to disable the progress bar when running the metadata deploy command."
1846
+ }
1847
+ ]
1848
+ },
1849
+ "errorCodes": {
1850
+ "header": "ERROR CODES",
1851
+ "body": [
1852
+ {
1853
+ "name": "Succeeded (0)",
1854
+ "description": "The deploy succeeded."
1855
+ },
1856
+ {
1857
+ "name": "Canceled (1)",
1858
+ "description": "The deploy was canceled."
1859
+ },
1860
+ {
1861
+ "name": "Failed (1)",
1862
+ "description": "The deploy failed."
1863
+ },
1864
+ {
1865
+ "name": "SucceededPartial (68)",
1866
+ "description": "The deploy partially succeeded."
1867
+ },
1868
+ {
1869
+ "name": "InProgress (69)",
1870
+ "description": "The deploy is in progress."
1871
+ },
1872
+ {
1873
+ "name": "Pending (69)",
1874
+ "description": "The deploy is pending."
1875
+ },
1876
+ {
1877
+ "name": "Canceling (69)",
1878
+ "description": "The deploy is being canceled."
1879
+ }
1880
+ ]
1881
+ },
2097
1882
  "isESM": true,
2098
1883
  "relativePath": [
2099
1884
  "lib",
2100
1885
  "commands",
2101
1886
  "project",
2102
- "delete",
2103
- "source.js"
1887
+ "deploy",
1888
+ "start.js"
2104
1889
  ],
2105
1890
  "aliasPermutations": [
2106
- "force:source:delete",
2107
- "source:force:delete",
2108
- "source:delete:force",
2109
- "force:delete:source",
2110
- "delete:force:source",
2111
- "delete:source:force"
1891
+ "deploy:metadata",
1892
+ "metadata:deploy"
2112
1893
  ],
2113
1894
  "permutations": [
2114
- "project:delete:source",
2115
- "delete:project:source",
2116
- "delete:source:project",
2117
- "project:source:delete",
2118
- "source:project:delete",
2119
- "source:delete:project"
1895
+ "project:deploy:start",
1896
+ "deploy:project:start",
1897
+ "deploy:start:project",
1898
+ "project:start:deploy",
1899
+ "start:project:deploy",
1900
+ "start:deploy:project"
2120
1901
  ]
2121
1902
  },
2122
- "project:delete:tracking": {
1903
+ "project:deploy:validate": {
2123
1904
  "aliases": [
2124
- "force:source:tracking:clear"
1905
+ "deploy:metadata:validate"
2125
1906
  ],
2126
1907
  "args": {},
2127
1908
  "deprecateAliases": true,
2128
- "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nDeletes all local source tracking information. When you next run 'project deploy preview', Salesforce CLI displays all local and remote files as changed, and any files with the same name are listed as conflicts.",
1909
+ "description": "Use this command to verify whether a deployment will succeed without actually deploying the metadata to your org. This command is similar to \"<%= config.bin %> project deploy start\", except you're required to run Apex tests, and the command returns a job ID rather than executing the deployment. If the validation succeeds, then you pass this job ID to the \"<%= config.bin %> project deploy quick\" command to actually deploy the metadata. This quick deploy takes less time because it skips running Apex tests. The job ID is valid for 10 days from when you started the validation. Validating first is useful if the deployment to your production org take several hours and you don’t want to risk a failed deploy.\n\nYou must run this command from within a project.\n\nThis command doesn't support source-tracking. When you quick deploy with the resulting job ID, the source you deploy overwrites the corresponding metadata in your org.\n\nTo validate the deployment of multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --manifest and --source-dir.\n\nNote: Don't use this command on sandboxes; the command is intended to be used on production orgs. By default, sandboxes don't run tests during a deploy. If you want to validate a deployment with tests on a sandbox, use \"<%= config.bin %> project deploy start --dry-run --test-level RunLocalTests\" instead.",
2129
1910
  "examples": [
2130
- "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
1911
+ "NOTE: These examples focus on validating large deployments. See the help for \"<%= config.bin %> project deploy start\" for examples of deploying smaller sets of metadata which you can also use to validate.",
1912
+ "Validate the deployment of all source files in the \"force-app\" directory to the default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
1913
+ "Validate the deployment of all source files in two directories: \"force-app\" and \"force-app-utils\":\n<%= config.bin %> <%= command.id %> --source-dir force-app --source-dir force-app-utils",
1914
+ "Asynchronously validate the deployment and run all tests in the org with alias \"my-prod-org\"; command immediately returns the job ID:\n<%= config.bin %> <%= command.id %> --source-dir force-app --async --test-level RunAllTestsInOrg --target-org my-prod-org",
1915
+ "Validate the deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
2131
1916
  ],
2132
1917
  "flags": {
2133
1918
  "json": {
@@ -2146,104 +1931,319 @@
2146
1931
  "type": "option"
2147
1932
  },
2148
1933
  "api-version": {
2149
- "aliases": [
2150
- "apiversion"
2151
- ],
2152
- "deprecateAliases": true,
2153
- "description": "Override the api version used for api requests made by this command",
1934
+ "char": "a",
1935
+ "description": "Use this flag to override the default API version with the API version of your package.xml file. The default API version is the latest version supported by the CLI.",
2154
1936
  "name": "api-version",
1937
+ "summary": "Target API version for the validation.",
2155
1938
  "hasDynamicHelp": false,
2156
1939
  "multiple": false,
2157
1940
  "type": "option"
2158
1941
  },
2159
- "loglevel": {
2160
- "deprecated": {
2161
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
2162
- },
2163
- "hidden": true,
2164
- "name": "loglevel",
1942
+ "async": {
1943
+ "description": "The command immediately returns the job ID and control of the terminal to you. This way, you can continue to use the CLI. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
1944
+ "name": "async",
1945
+ "summary": "Run the command asynchronously.",
1946
+ "allowNo": false,
1947
+ "type": "boolean"
1948
+ },
1949
+ "concise": {
1950
+ "exclusive": [
1951
+ "verbose"
1952
+ ],
1953
+ "name": "concise",
1954
+ "summary": "Show concise output of the validation result.",
1955
+ "allowNo": false,
1956
+ "type": "boolean"
1957
+ },
1958
+ "manifest": {
1959
+ "char": "x",
1960
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1961
+ "helpGroup": "Source Format",
1962
+ "name": "manifest",
1963
+ "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
2165
1964
  "hasDynamicHelp": false,
2166
1965
  "multiple": false,
2167
1966
  "type": "option"
2168
1967
  },
2169
- "target-org": {
2170
- "aliases": [
2171
- "targetusername",
2172
- "u"
2173
- ],
2174
- "char": "o",
2175
- "deprecateAliases": true,
2176
- "name": "target-org",
2177
- "noCacheDefault": true,
2178
- "required": true,
2179
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2180
- "hasDynamicHelp": true,
2181
- "multiple": false,
1968
+ "metadata": {
1969
+ "char": "m",
1970
+ "helpGroup": "Source Format",
1971
+ "name": "metadata",
1972
+ "summary": "Metadata component names to validate for deployment.",
1973
+ "hasDynamicHelp": false,
1974
+ "multiple": true,
2182
1975
  "type": "option"
2183
1976
  },
2184
- "no-prompt": {
2185
- "aliases": [
2186
- "noprompt"
2187
- ],
2188
- "char": "p",
2189
- "deprecateAliases": true,
2190
- "name": "no-prompt",
2191
- "summary": "Don't prompt for source tracking override confirmation.",
2192
- "allowNo": false,
1977
+ "source-dir": {
1978
+ "char": "d",
1979
+ "description": "The supplied path can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its subdirectories).\n\nIf you specify this flag, don’t specify --metadata or --manifest.",
1980
+ "helpGroup": "Source Format",
1981
+ "name": "source-dir",
1982
+ "summary": "Path to the local source files to validate for deployment.",
1983
+ "hasDynamicHelp": false,
1984
+ "multiple": true,
1985
+ "type": "option"
1986
+ },
1987
+ "metadata-dir": {
1988
+ "helpGroup": "Metadata API Format",
1989
+ "name": "metadata-dir",
1990
+ "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1991
+ "hasDynamicHelp": false,
1992
+ "multiple": false,
1993
+ "type": "option"
1994
+ },
1995
+ "single-package": {
1996
+ "dependsOn": [
1997
+ "metadata-dir"
1998
+ ],
1999
+ "helpGroup": "Metadata API Format",
2000
+ "name": "single-package",
2001
+ "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
2002
+ "allowNo": false,
2003
+ "type": "boolean"
2004
+ },
2005
+ "target-org": {
2006
+ "char": "o",
2007
+ "name": "target-org",
2008
+ "noCacheDefault": true,
2009
+ "required": true,
2010
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2011
+ "hasDynamicHelp": true,
2012
+ "multiple": false,
2013
+ "type": "option"
2014
+ },
2015
+ "tests": {
2016
+ "char": "t",
2017
+ "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
2018
+ "helpGroup": "Test",
2019
+ "name": "tests",
2020
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
2021
+ "hasDynamicHelp": false,
2022
+ "multiple": true,
2023
+ "type": "option"
2024
+ },
2025
+ "test-level": {
2026
+ "char": "l",
2027
+ "description": "Valid values are:\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.",
2028
+ "helpGroup": "Test",
2029
+ "name": "test-level",
2030
+ "summary": "Deployment Apex testing level.",
2031
+ "default": "RunLocalTests",
2032
+ "hasDynamicHelp": false,
2033
+ "multiple": false,
2034
+ "options": [
2035
+ "RunAllTestsInOrg",
2036
+ "RunLocalTests",
2037
+ "RunSpecifiedTests"
2038
+ ],
2039
+ "type": "option"
2040
+ },
2041
+ "verbose": {
2042
+ "exclusive": [
2043
+ "concise"
2044
+ ],
2045
+ "name": "verbose",
2046
+ "summary": "Show verbose output of the validation result.",
2047
+ "allowNo": false,
2048
+ "type": "boolean"
2049
+ },
2050
+ "wait": {
2051
+ "char": "w",
2052
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you and returns the job ID. To resume watching the validation, run \"<%= config.bin %> project deploy resume\". To check the status of the validation, run \"<%= config.bin %> project deploy report\".",
2053
+ "name": "wait",
2054
+ "summary": "Number of minutes to wait for the command to complete and display results.",
2055
+ "hasDynamicHelp": true,
2056
+ "helpValue": "<minutes>",
2057
+ "multiple": false,
2058
+ "type": "option"
2059
+ },
2060
+ "ignore-warnings": {
2061
+ "char": "g",
2062
+ "description": "If you specify this flag, and a warning occurs, the success status of the deployment is set to true. If you don't specify this flag, and a warning occurs, then the success status is set to false, and the warning is treated like an error.\n\nThis flag is useful in a CI environment and your deployment includes destructive changes; if you try to delete a component that doesn't exist in the org, you get a warning. In this case, to ensure that the command returns a success value of true, specify this flag.",
2063
+ "name": "ignore-warnings",
2064
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
2065
+ "allowNo": false,
2066
+ "type": "boolean"
2067
+ },
2068
+ "coverage-formatters": {
2069
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
2070
+ "helpGroup": "Test",
2071
+ "name": "coverage-formatters",
2072
+ "summary": "Format of the code coverage results.",
2073
+ "hasDynamicHelp": false,
2074
+ "multiple": true,
2075
+ "options": [
2076
+ "clover",
2077
+ "cobertura",
2078
+ "html-spa",
2079
+ "html",
2080
+ "json",
2081
+ "json-summary",
2082
+ "lcovonly",
2083
+ "none",
2084
+ "teamcity",
2085
+ "text",
2086
+ "text-summary"
2087
+ ],
2088
+ "type": "option"
2089
+ },
2090
+ "junit": {
2091
+ "helpGroup": "Test",
2092
+ "name": "junit",
2093
+ "summary": "Output JUnit test results.",
2094
+ "allowNo": false,
2095
+ "type": "boolean"
2096
+ },
2097
+ "results-dir": {
2098
+ "helpGroup": "Test",
2099
+ "name": "results-dir",
2100
+ "relationships": [
2101
+ {
2102
+ "type": "some",
2103
+ "flags": [
2104
+ "coverage-formatters",
2105
+ "junit"
2106
+ ]
2107
+ }
2108
+ ],
2109
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
2110
+ "hasDynamicHelp": false,
2111
+ "multiple": false,
2112
+ "type": "option"
2113
+ },
2114
+ "purge-on-delete": {
2115
+ "dependsOn": [
2116
+ "manifest"
2117
+ ],
2118
+ "helpGroup": "Delete",
2119
+ "name": "purge-on-delete",
2120
+ "relationships": [
2121
+ {
2122
+ "type": "some",
2123
+ "flags": [
2124
+ "pre-destructive-changes",
2125
+ "post-destructive-changes"
2126
+ ]
2127
+ }
2128
+ ],
2129
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
2130
+ "allowNo": false,
2193
2131
  "type": "boolean"
2132
+ },
2133
+ "pre-destructive-changes": {
2134
+ "dependsOn": [
2135
+ "manifest"
2136
+ ],
2137
+ "helpGroup": "Delete",
2138
+ "name": "pre-destructive-changes",
2139
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
2140
+ "hasDynamicHelp": false,
2141
+ "multiple": false,
2142
+ "type": "option"
2143
+ },
2144
+ "post-destructive-changes": {
2145
+ "dependsOn": [
2146
+ "manifest"
2147
+ ],
2148
+ "helpGroup": "Delete",
2149
+ "name": "post-destructive-changes",
2150
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
2151
+ "hasDynamicHelp": false,
2152
+ "multiple": false,
2153
+ "type": "option"
2194
2154
  }
2195
2155
  },
2196
2156
  "hasDynamicHelp": true,
2197
2157
  "hiddenAliases": [],
2198
- "id": "project:delete:tracking",
2158
+ "id": "project:deploy:validate",
2199
2159
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2200
2160
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2201
2161
  "pluginType": "core",
2202
2162
  "strict": true,
2203
- "summary": "Delete all local source tracking information.",
2163
+ "summary": "Validate a metadata deployment without actually executing it.",
2204
2164
  "enableJsonFlag": true,
2205
- "requiresProject": true,
2165
+ "configurationVariablesSection": {
2166
+ "header": "CONFIGURATION VARIABLES",
2167
+ "body": [
2168
+ {
2169
+ "name": "target-org",
2170
+ "description": "Username or alias of the org that all commands run against by default. (sf only)"
2171
+ },
2172
+ {
2173
+ "name": "org-api-version",
2174
+ "description": "API version of your project. Default: API version of your Dev Hub org."
2175
+ }
2176
+ ]
2177
+ },
2178
+ "envVariablesSection": {
2179
+ "header": "ENVIRONMENT VARIABLES",
2180
+ "body": [
2181
+ {
2182
+ "name": "SF_TARGET_ORG",
2183
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
2184
+ },
2185
+ {
2186
+ "name": "SF_USE_PROGRESS_BAR",
2187
+ "description": "Set to false to disable the progress bar when running the metadata deploy command."
2188
+ }
2189
+ ]
2190
+ },
2191
+ "errorCodes": {
2192
+ "header": "ERROR CODES",
2193
+ "body": [
2194
+ {
2195
+ "name": "Succeeded (0)",
2196
+ "description": "The deploy succeeded."
2197
+ },
2198
+ {
2199
+ "name": "Canceled (1)",
2200
+ "description": "The deploy was canceled."
2201
+ },
2202
+ {
2203
+ "name": "Failed (1)",
2204
+ "description": "The deploy failed."
2205
+ },
2206
+ {
2207
+ "name": "SucceededPartial (68)",
2208
+ "description": "The deploy partially succeeded."
2209
+ },
2210
+ {
2211
+ "name": "InProgress (69)",
2212
+ "description": "The deploy is in progress."
2213
+ },
2214
+ {
2215
+ "name": "Pending (69)",
2216
+ "description": "The deploy is pending."
2217
+ },
2218
+ {
2219
+ "name": "Canceling (69)",
2220
+ "description": "The deploy is being canceled."
2221
+ }
2222
+ ]
2223
+ },
2206
2224
  "isESM": true,
2207
2225
  "relativePath": [
2208
2226
  "lib",
2209
2227
  "commands",
2210
2228
  "project",
2211
- "delete",
2212
- "tracking.js"
2229
+ "deploy",
2230
+ "validate.js"
2213
2231
  ],
2214
2232
  "aliasPermutations": [
2215
- "force:source:tracking:clear",
2216
- "source:force:tracking:clear",
2217
- "source:tracking:force:clear",
2218
- "source:tracking:clear:force",
2219
- "force:tracking:source:clear",
2220
- "tracking:force:source:clear",
2221
- "tracking:source:force:clear",
2222
- "tracking:source:clear:force",
2223
- "force:tracking:clear:source",
2224
- "tracking:force:clear:source",
2225
- "tracking:clear:force:source",
2226
- "tracking:clear:source:force",
2227
- "force:source:clear:tracking",
2228
- "source:force:clear:tracking",
2229
- "source:clear:force:tracking",
2230
- "source:clear:tracking:force",
2231
- "force:clear:source:tracking",
2232
- "clear:force:source:tracking",
2233
- "clear:source:force:tracking",
2234
- "clear:source:tracking:force",
2235
- "force:clear:tracking:source",
2236
- "clear:force:tracking:source",
2237
- "clear:tracking:force:source",
2238
- "clear:tracking:source:force"
2233
+ "deploy:metadata:validate",
2234
+ "metadata:deploy:validate",
2235
+ "metadata:validate:deploy",
2236
+ "deploy:validate:metadata",
2237
+ "validate:deploy:metadata",
2238
+ "validate:metadata:deploy"
2239
2239
  ],
2240
2240
  "permutations": [
2241
- "project:delete:tracking",
2242
- "delete:project:tracking",
2243
- "delete:tracking:project",
2244
- "project:tracking:delete",
2245
- "tracking:project:delete",
2246
- "tracking:delete:project"
2241
+ "project:deploy:validate",
2242
+ "deploy:project:validate",
2243
+ "deploy:validate:project",
2244
+ "project:validate:deploy",
2245
+ "validate:project:deploy",
2246
+ "validate:deploy:project"
2247
2247
  ]
2248
2248
  },
2249
2249
  "project:generate:manifest": {
@@ -3027,5 +3027,5 @@
3027
3027
  ]
3028
3028
  }
3029
3029
  },
3030
- "version": "3.15.4"
3030
+ "version": "3.15.5"
3031
3031
  }