@salesforce/plugin-deploy-retrieve 3.24.56 → 3.24.58

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 +1329 -1329
  3. package/package.json +5 -5
@@ -405,16 +405,18 @@
405
405
  "source:convert:project"
406
406
  ]
407
407
  },
408
- "project:deploy:cancel": {
408
+ "project:delete:source": {
409
409
  "aliases": [
410
- "deploy:metadata:cancel"
410
+ "force:source:delete"
411
411
  ],
412
412
  "args": {},
413
413
  "deprecateAliases": true,
414
- "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.",
414
+ "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 --source-dir.",
415
415
  "examples": [
416
- "Cancel a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
417
- "Cancel the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
416
+ "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",
417
+ "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",
418
+ "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",
419
+ "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"
418
420
  ],
419
421
  "flags": {
420
422
  "json": {
@@ -432,103 +434,207 @@
432
434
  "multiple": false,
433
435
  "type": "option"
434
436
  },
437
+ "api-version": {
438
+ "aliases": [
439
+ "apiversion"
440
+ ],
441
+ "deprecateAliases": true,
442
+ "description": "Override the api version used for api requests made by this command",
443
+ "name": "api-version",
444
+ "hasDynamicHelp": false,
445
+ "multiple": false,
446
+ "type": "option"
447
+ },
448
+ "loglevel": {
449
+ "deprecated": {
450
+ "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."
451
+ },
452
+ "hidden": true,
453
+ "name": "loglevel",
454
+ "hasDynamicHelp": false,
455
+ "multiple": false,
456
+ "type": "option"
457
+ },
435
458
  "target-org": {
459
+ "aliases": [
460
+ "targetusername",
461
+ "u"
462
+ ],
436
463
  "char": "o",
464
+ "deprecateAliases": true,
437
465
  "name": "target-org",
438
466
  "noCacheDefault": true,
439
- "summary": "Username or alias of the target org.",
467
+ "required": true,
468
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
440
469
  "hasDynamicHelp": true,
441
470
  "multiple": false,
442
471
  "type": "option"
443
472
  },
444
- "async": {
445
- "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\".",
446
- "exclusive": [
447
- "wait"
473
+ "check-only": {
474
+ "aliases": [
475
+ "checkonly"
448
476
  ],
449
- "name": "async",
450
- "summary": "Run the command asynchronously.",
477
+ "char": "c",
478
+ "deprecateAliases": true,
479
+ "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 flag 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.",
480
+ "name": "check-only",
481
+ "summary": "Validate delete command but don't delete anything from the org or the local project.",
451
482
  "allowNo": false,
452
483
  "type": "boolean"
453
484
  },
454
- "job-id": {
455
- "char": "i",
456
- "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.",
457
- "name": "job-id",
458
- "summary": "Job ID of the deploy operation you want to cancel.",
485
+ "wait": {
486
+ "char": "w",
487
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
488
+ "name": "wait",
489
+ "summary": "Number of minutes to wait for the command to finish.",
490
+ "hasDynamicHelp": true,
491
+ "multiple": false,
492
+ "type": "option"
493
+ },
494
+ "tests": {
495
+ "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\"",
496
+ "helpGroup": "Test",
497
+ "name": "tests",
498
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
499
+ "hasDynamicHelp": false,
500
+ "multiple": true,
501
+ "type": "option"
502
+ },
503
+ "test-level": {
504
+ "aliases": [
505
+ "testlevel"
506
+ ],
507
+ "char": "l",
508
+ "deprecateAliases": true,
509
+ "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- RunRelevantTests (Beta) — Runs only tests that are relevant to the files being deployed. Salesforce automatically identifies the relevant tests based on an analysis of the deployment payload and the payload dependencies. For fine-grained control, you can also annotate test classes so that they always run in certain conditions. See \"@IsTest Annotation\" in the \"Apex Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_isTest.htm). Each class and trigger in the deployment package must be covered by the executed tests for a minimum of 75% code coverage. This coverage is computed for each class and triggers individually and is different than the overall coverage percentage.\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\" (https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
510
+ "helpGroup": "Test",
511
+ "name": "test-level",
512
+ "summary": "Deployment Apex testing level.",
459
513
  "hasDynamicHelp": false,
460
514
  "multiple": false,
515
+ "options": [
516
+ "NoTestRun",
517
+ "RunSpecifiedTests",
518
+ "RunLocalTests",
519
+ "RunAllTestsInOrg",
520
+ "RunRelevantTests"
521
+ ],
461
522
  "type": "option"
462
523
  },
463
- "use-most-recent": {
524
+ "no-prompt": {
525
+ "aliases": [
526
+ "noprompt"
527
+ ],
464
528
  "char": "r",
465
- "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.",
466
- "name": "use-most-recent",
467
- "summary": "Use the job ID of the most recent deploy operation.",
529
+ "deprecateAliases": true,
530
+ "name": "no-prompt",
531
+ "summary": "Don't prompt for delete confirmation.",
468
532
  "allowNo": false,
469
533
  "type": "boolean"
470
534
  },
471
- "wait": {
472
- "char": "w",
473
- "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\".",
474
- "exclusive": [
475
- "async"
535
+ "metadata": {
536
+ "char": "m",
537
+ "description": "If you specify this flag, don’t specify --source-dir.",
538
+ "name": "metadata",
539
+ "summary": "Metadata components to delete.",
540
+ "delimiter": ",",
541
+ "hasDynamicHelp": false,
542
+ "multiple": true,
543
+ "type": "option"
544
+ },
545
+ "source-dir": {
546
+ "aliases": [
547
+ "sourcepath"
476
548
  ],
477
- "name": "wait",
478
- "summary": "Number of minutes to wait for the command to complete and display results.",
479
- "hasDynamicHelp": true,
480
- "helpValue": "<minutes>",
481
- "multiple": false,
549
+ "char": "p",
550
+ "deprecateAliases": true,
551
+ "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 flag, don’t specify --metadata.",
552
+ "name": "source-dir",
553
+ "summary": "Source file paths to delete.",
554
+ "delimiter": ",",
555
+ "hasDynamicHelp": false,
556
+ "multiple": true,
482
557
  "type": "option"
558
+ },
559
+ "track-source": {
560
+ "aliases": [
561
+ "tracksource"
562
+ ],
563
+ "char": "t",
564
+ "deprecateAliases": true,
565
+ "exclusive": [
566
+ "check-only"
567
+ ],
568
+ "name": "track-source",
569
+ "summary": "If the delete succeeds, update the source tracking information.",
570
+ "allowNo": false,
571
+ "type": "boolean"
572
+ },
573
+ "force-overwrite": {
574
+ "aliases": [
575
+ "forceoverwrite"
576
+ ],
577
+ "char": "f",
578
+ "dependsOn": [
579
+ "track-source"
580
+ ],
581
+ "deprecateAliases": true,
582
+ "name": "force-overwrite",
583
+ "summary": "Ignore conflict warnings and overwrite changes to the org.",
584
+ "allowNo": false,
585
+ "type": "boolean"
586
+ },
587
+ "verbose": {
588
+ "name": "verbose",
589
+ "summary": "Verbose output of the delete result.",
590
+ "allowNo": false,
591
+ "type": "boolean"
483
592
  }
484
593
  },
485
594
  "hasDynamicHelp": true,
486
595
  "hiddenAliases": [],
487
- "id": "project:deploy:cancel",
596
+ "id": "project:delete:source",
488
597
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
489
598
  "pluginName": "@salesforce/plugin-deploy-retrieve",
490
599
  "pluginType": "core",
491
600
  "strict": true,
492
- "summary": "Cancel a deploy operation.",
601
+ "summary": "Delete source from your project and from a non-source-tracked org.",
493
602
  "enableJsonFlag": true,
603
+ "requiresProject": true,
494
604
  "isESM": true,
495
605
  "relativePath": [
496
606
  "lib",
497
607
  "commands",
498
608
  "project",
499
- "deploy",
500
- "cancel.js"
609
+ "delete",
610
+ "source.js"
501
611
  ],
502
612
  "aliasPermutations": [
503
- "deploy:metadata:cancel",
504
- "metadata:deploy:cancel",
505
- "metadata:cancel:deploy",
506
- "deploy:cancel:metadata",
507
- "cancel:deploy:metadata",
508
- "cancel:metadata:deploy"
613
+ "force:source:delete",
614
+ "source:force:delete",
615
+ "source:delete:force",
616
+ "force:delete:source",
617
+ "delete:force:source",
618
+ "delete:source:force"
509
619
  ],
510
620
  "permutations": [
511
- "project:deploy:cancel",
512
- "deploy:project:cancel",
513
- "deploy:cancel:project",
514
- "project:cancel:deploy",
515
- "cancel:project:deploy",
516
- "cancel:deploy:project"
621
+ "project:delete:source",
622
+ "delete:project:source",
623
+ "delete:source:project",
624
+ "project:source:delete",
625
+ "source:project:delete",
626
+ "source:delete:project"
517
627
  ]
518
628
  },
519
- "project:deploy:preview": {
629
+ "project:delete:tracking": {
520
630
  "aliases": [
521
- "deploy:metadata:preview"
631
+ "force:source:tracking:clear"
522
632
  ],
523
633
  "args": {},
524
634
  "deprecateAliases": true,
525
- "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 --source-dir.",
635
+ "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.",
526
636
  "examples": [
527
- "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.",
528
- "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",
529
- "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",
530
- "Preview deployment of a specific Apex class:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass",
531
- "Preview deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
637
+ "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
532
638
  ],
533
639
  "flags": {
534
640
  "json": {
@@ -546,54 +652,34 @@
546
652
  "multiple": false,
547
653
  "type": "option"
548
654
  },
549
- "ignore-conflicts": {
550
- "char": "c",
551
- "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.",
552
- "name": "ignore-conflicts",
553
- "summary": "Don't display conflicts in preview of the deployment.",
554
- "allowNo": false,
555
- "type": "boolean"
556
- },
557
- "manifest": {
558
- "char": "x",
559
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
560
- "exclusive": [
561
- "source-dir",
562
- "metadata"
655
+ "api-version": {
656
+ "aliases": [
657
+ "apiversion"
563
658
  ],
564
- "name": "manifest",
565
- "summary": "Full file path for manifest (package.xml) of components to preview.",
659
+ "deprecateAliases": true,
660
+ "description": "Override the api version used for api requests made by this command",
661
+ "name": "api-version",
566
662
  "hasDynamicHelp": false,
567
663
  "multiple": false,
568
664
  "type": "option"
569
665
  },
570
- "metadata": {
571
- "char": "m",
572
- "exclusive": [
573
- "manifest",
574
- "source-dir"
575
- ],
576
- "name": "metadata",
577
- "summary": "Metadata component names to preview.",
666
+ "loglevel": {
667
+ "deprecated": {
668
+ "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."
669
+ },
670
+ "hidden": true,
671
+ "name": "loglevel",
578
672
  "hasDynamicHelp": false,
579
- "multiple": true,
580
- "type": "option"
581
- },
582
- "source-dir": {
583
- "char": "d",
584
- "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.",
585
- "exclusive": [
586
- "manifest",
587
- "metadata"
588
- ],
589
- "name": "source-dir",
590
- "summary": "Path to the local source files to preview.",
591
- "hasDynamicHelp": false,
592
- "multiple": true,
673
+ "multiple": false,
593
674
  "type": "option"
594
675
  },
595
676
  "target-org": {
677
+ "aliases": [
678
+ "targetusername",
679
+ "u"
680
+ ],
596
681
  "char": "o",
682
+ "deprecateAliases": true,
597
683
  "name": "target-org",
598
684
  "noCacheDefault": true,
599
685
  "required": true,
@@ -602,21 +688,26 @@
602
688
  "multiple": false,
603
689
  "type": "option"
604
690
  },
605
- "concise": {
606
- "name": "concise",
607
- "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
691
+ "no-prompt": {
692
+ "aliases": [
693
+ "noprompt"
694
+ ],
695
+ "char": "p",
696
+ "deprecateAliases": true,
697
+ "name": "no-prompt",
698
+ "summary": "Don't prompt for source tracking override confirmation.",
608
699
  "allowNo": false,
609
700
  "type": "boolean"
610
701
  }
611
702
  },
612
703
  "hasDynamicHelp": true,
613
704
  "hiddenAliases": [],
614
- "id": "project:deploy:preview",
705
+ "id": "project:delete:tracking",
615
706
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
616
707
  "pluginName": "@salesforce/plugin-deploy-retrieve",
617
708
  "pluginType": "core",
618
709
  "strict": true,
619
- "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
710
+ "summary": "Delete all local source tracking information.",
620
711
  "enableJsonFlag": true,
621
712
  "requiresProject": true,
622
713
  "isESM": true,
@@ -624,36 +715,58 @@
624
715
  "lib",
625
716
  "commands",
626
717
  "project",
627
- "deploy",
628
- "preview.js"
718
+ "delete",
719
+ "tracking.js"
629
720
  ],
630
721
  "aliasPermutations": [
631
- "deploy:metadata:preview",
632
- "metadata:deploy:preview",
633
- "metadata:preview:deploy",
634
- "deploy:preview:metadata",
635
- "preview:deploy:metadata",
636
- "preview:metadata:deploy"
722
+ "force:source:tracking:clear",
723
+ "source:force:tracking:clear",
724
+ "source:tracking:force:clear",
725
+ "source:tracking:clear:force",
726
+ "force:tracking:source:clear",
727
+ "tracking:force:source:clear",
728
+ "tracking:source:force:clear",
729
+ "tracking:source:clear:force",
730
+ "force:tracking:clear:source",
731
+ "tracking:force:clear:source",
732
+ "tracking:clear:force:source",
733
+ "tracking:clear:source:force",
734
+ "force:source:clear:tracking",
735
+ "source:force:clear:tracking",
736
+ "source:clear:force:tracking",
737
+ "source:clear:tracking:force",
738
+ "force:clear:source:tracking",
739
+ "clear:force:source:tracking",
740
+ "clear:source:force:tracking",
741
+ "clear:source:tracking:force",
742
+ "force:clear:tracking:source",
743
+ "clear:force:tracking:source",
744
+ "clear:tracking:force:source",
745
+ "clear:tracking:source:force"
637
746
  ],
638
747
  "permutations": [
639
- "project:deploy:preview",
640
- "deploy:project:preview",
641
- "deploy:preview:project",
642
- "project:preview:deploy",
643
- "preview:project:deploy",
644
- "preview:deploy:project"
748
+ "project:delete:tracking",
749
+ "delete:project:tracking",
750
+ "delete:tracking:project",
751
+ "project:tracking:delete",
752
+ "tracking:project:delete",
753
+ "tracking:delete:project"
645
754
  ]
646
755
  },
647
- "project:deploy:quick": {
756
+ "project:generate:manifest": {
648
757
  "aliases": [
649
- "deploy:metadata:quick"
758
+ "force:source:manifest:create"
650
759
  ],
651
760
  "args": {},
652
761
  "deprecateAliases": true,
653
- "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.",
762
+ "description": "Create a manifest from a list of metadata components (--metadata) or from one or more local directories that contain source files (--source-dir). You can specify either of these flags, not both.\n\nUse --type to specify the type of manifest you want to create. The resulting manifest files have specific names, such as the standard package.xml or destructiveChanges.xml to delete metadata. Valid values for this flag, and their respective file names, are:\n\n * package : package.xml (default)\n * pre : destructiveChangesPre.xml\n * post : destructiveChangesPost.xml\n * destroy : destructiveChanges.xml\n\nSee https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_deleting_files.htm for information about these destructive manifest files.\n\nUse --name to specify a custom name for the generated manifest if the pre-defined ones don’t suit your needs. You can specify either --type or --name, but not both.\n\nTo include 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 --include-packages and --source-dir.\n\nTo build a manifest from the metadata in an org, use the --from-org flag. You can combine --from-org with the --metadata flag to include only certain metadata types, or with the --excluded-metadata flag to exclude certain metadata types. When building a manifest from an org, the command makes many concurrent API calls to discover the metadata that exists in the org. To limit the number of concurrent requests, use the SF_LIST_METADATA_BATCH_SIZE environment variable and set it to a size that works best for your org and environment. If you experience timeouts or inconsistent manifest contents, then setting this environment variable can improve accuracy. However, the command takes longer to run because it sends fewer requests at a time.",
654
763
  "examples": [
655
- "Run a quick deploy to your default org using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
656
- "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"
764
+ "Create a manifest for deploying or retrieving all Apex classes and custom objects:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass --metadata CustomObject",
765
+ "Create a manifest for deleting the specified Apex class:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --type destroy",
766
+ "Create a manifest for deploying or retrieving all the metadata components in the specified local directory; name the file myNewManifest.xml:\n$ <%= config.bin %> <%= command.id %> --source-dir force-app --name myNewManifest",
767
+ "Create a manifest from the metadata components in the specified org and include metadata in any unlocked packages:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --include-packages unlocked",
768
+ "Create a manifest from specific metadata types in an org:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --metadata ApexClass,CustomObject,CustomLabels",
769
+ "Create a manifest from all metadata components in an org excluding specific metadata types:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --excluded-metadata StandardValueSet"
657
770
  ],
658
771
  "flags": {
659
772
  "json": {
@@ -671,162 +784,213 @@
671
784
  "multiple": false,
672
785
  "type": "option"
673
786
  },
674
- "async": {
675
- "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\".",
676
- "exclusive": [
677
- "wait"
678
- ],
679
- "name": "async",
680
- "summary": "Run the command asynchronously.",
681
- "allowNo": false,
682
- "type": "boolean"
683
- },
684
- "concise": {
685
- "exclusive": [
686
- "verbose"
787
+ "api-version": {
788
+ "aliases": [
789
+ "apiversion"
687
790
  ],
688
- "name": "concise",
689
- "summary": "Show concise output of the deploy result.",
690
- "allowNo": false,
691
- "type": "boolean"
692
- },
693
- "job-id": {
694
- "char": "i",
695
- "description": "The job ID is valid for 10 days from when you started the validation.",
696
- "name": "job-id",
697
- "summary": "Job ID of the deployment you want to quick deploy.",
791
+ "deprecateAliases": true,
792
+ "description": "Override the api version used for api requests made by this command",
793
+ "name": "api-version",
698
794
  "hasDynamicHelp": false,
699
795
  "multiple": false,
700
796
  "type": "option"
701
797
  },
702
- "target-org": {
703
- "char": "o",
704
- "name": "target-org",
705
- "noCacheDefault": true,
706
- "summary": "Username or alias of the target org.",
707
- "hasDynamicHelp": true,
798
+ "loglevel": {
799
+ "deprecated": {
800
+ "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."
801
+ },
802
+ "hidden": true,
803
+ "name": "loglevel",
804
+ "hasDynamicHelp": false,
708
805
  "multiple": false,
709
806
  "type": "option"
710
807
  },
711
- "use-most-recent": {
712
- "char": "r",
713
- "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.",
714
- "name": "use-most-recent",
715
- "summary": "Use the job ID of the most recently validated deployment.",
716
- "allowNo": false,
717
- "type": "boolean"
808
+ "metadata": {
809
+ "char": "m",
810
+ "name": "metadata",
811
+ "summary": "Names of metadata components to include in the manifest.",
812
+ "delimiter": ",",
813
+ "hasDynamicHelp": false,
814
+ "multiple": true,
815
+ "type": "option"
718
816
  },
719
- "verbose": {
817
+ "source-dir": {
818
+ "aliases": [
819
+ "sourcepath"
820
+ ],
821
+ "char": "p",
822
+ "deprecateAliases": true,
823
+ "name": "source-dir",
824
+ "summary": "Paths to the local source files to include in the manifest.",
825
+ "delimiter": ",",
826
+ "hasDynamicHelp": false,
827
+ "multiple": true,
828
+ "type": "option"
829
+ },
830
+ "name": {
831
+ "aliases": [
832
+ "manifestname"
833
+ ],
834
+ "char": "n",
835
+ "deprecateAliases": true,
720
836
  "exclusive": [
721
- "concise"
837
+ "type"
722
838
  ],
723
- "name": "verbose",
724
- "summary": "Show verbose output of the deploy result.",
725
- "allowNo": false,
726
- "type": "boolean"
839
+ "name": "name",
840
+ "summary": "Name of a custom manifest file to create.",
841
+ "hasDynamicHelp": false,
842
+ "multiple": false,
843
+ "type": "option"
727
844
  },
728
- "wait": {
729
- "char": "w",
730
- "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\".",
845
+ "type": {
846
+ "aliases": [
847
+ "manifesttype"
848
+ ],
849
+ "char": "t",
850
+ "deprecateAliases": true,
731
851
  "exclusive": [
732
- "async"
852
+ "name"
733
853
  ],
734
- "name": "wait",
735
- "summary": "Number of minutes to wait for the command to complete and display results.",
736
- "default": "33 minutes",
737
- "hasDynamicHelp": true,
738
- "helpValue": "<minutes>",
854
+ "name": "type",
855
+ "summary": "Type of manifest to create; the type determines the name of the created file.",
856
+ "hasDynamicHelp": false,
739
857
  "multiple": false,
858
+ "options": [
859
+ "pre",
860
+ "post",
861
+ "destroy",
862
+ "package"
863
+ ],
740
864
  "type": "option"
741
865
  },
742
- "api-version": {
743
- "char": "a",
744
- "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.",
745
- "name": "api-version",
746
- "summary": "Target API version for the deploy.",
866
+ "include-packages": {
867
+ "aliases": [
868
+ "includepackages"
869
+ ],
870
+ "char": "c",
871
+ "dependsOn": [
872
+ "from-org"
873
+ ],
874
+ "deprecateAliases": true,
875
+ "name": "include-packages",
876
+ "summary": "Package types (managed, unlocked) whose metadata is included in the manifest; by default, metadata in managed and unlocked packages is excluded. Metadata in unmanaged packages is always included.",
877
+ "delimiter": ",",
878
+ "hasDynamicHelp": false,
879
+ "multiple": true,
880
+ "options": [
881
+ "managed",
882
+ "unlocked"
883
+ ],
884
+ "type": "option"
885
+ },
886
+ "excluded-metadata": {
887
+ "name": "excluded-metadata",
888
+ "relationships": [
889
+ {
890
+ "type": "some",
891
+ "flags": [
892
+ "from-org",
893
+ "source-dir"
894
+ ]
895
+ }
896
+ ],
897
+ "summary": "Metadata types to exclude when building a manifest from an org. Specify the name of the type, not the name of a specific component.",
898
+ "delimiter": ",",
899
+ "hasDynamicHelp": false,
900
+ "multiple": true,
901
+ "type": "option"
902
+ },
903
+ "from-org": {
904
+ "aliases": [
905
+ "fromorg"
906
+ ],
907
+ "deprecateAliases": true,
908
+ "exclusive": [
909
+ "source-dir"
910
+ ],
911
+ "name": "from-org",
912
+ "summary": "Username or alias of the org that contains the metadata components from which to build a manifest.",
913
+ "hasDynamicHelp": false,
914
+ "multiple": false,
915
+ "type": "option"
916
+ },
917
+ "output-dir": {
918
+ "aliases": [
919
+ "outputdir",
920
+ "o"
921
+ ],
922
+ "char": "d",
923
+ "deprecateAliases": true,
924
+ "name": "output-dir",
925
+ "summary": "Directory to save the created manifest.",
747
926
  "hasDynamicHelp": false,
748
927
  "multiple": false,
749
928
  "type": "option"
750
929
  }
751
930
  },
752
- "hasDynamicHelp": true,
931
+ "hasDynamicHelp": false,
753
932
  "hiddenAliases": [],
754
- "id": "project:deploy:quick",
933
+ "id": "project:generate:manifest",
755
934
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
756
935
  "pluginName": "@salesforce/plugin-deploy-retrieve",
757
936
  "pluginType": "core",
758
937
  "strict": true,
759
- "summary": "Quickly deploy a validated deployment to an org.",
938
+ "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
760
939
  "enableJsonFlag": true,
761
- "errorCodes": {
762
- "header": "ERROR CODES",
763
- "body": [
764
- {
765
- "name": "Succeeded (0)",
766
- "description": "The deploy succeeded."
767
- },
768
- {
769
- "name": "Canceled (1)",
770
- "description": "The deploy was canceled."
771
- },
772
- {
773
- "name": "Failed (1)",
774
- "description": "The deploy failed."
775
- },
776
- {
777
- "name": "SucceededPartial (68)",
778
- "description": "The deploy partially succeeded."
779
- },
780
- {
781
- "name": "InProgress (69)",
782
- "description": "The deploy is in progress."
783
- },
784
- {
785
- "name": "Pending (69)",
786
- "description": "The deploy is pending."
787
- },
788
- {
789
- "name": "Canceling (69)",
790
- "description": "The deploy is being canceled."
791
- }
792
- ]
793
- },
940
+ "requiresProject": true,
794
941
  "isESM": true,
795
942
  "relativePath": [
796
943
  "lib",
797
944
  "commands",
798
945
  "project",
799
- "deploy",
800
- "quick.js"
946
+ "generate",
947
+ "manifest.js"
801
948
  ],
802
949
  "aliasPermutations": [
803
- "deploy:metadata:quick",
804
- "metadata:deploy:quick",
805
- "metadata:quick:deploy",
806
- "deploy:quick:metadata",
807
- "quick:deploy:metadata",
808
- "quick:metadata:deploy"
950
+ "force:source:manifest:create",
951
+ "source:force:manifest:create",
952
+ "source:manifest:force:create",
953
+ "source:manifest:create:force",
954
+ "force:manifest:source:create",
955
+ "manifest:force:source:create",
956
+ "manifest:source:force:create",
957
+ "manifest:source:create:force",
958
+ "force:manifest:create:source",
959
+ "manifest:force:create:source",
960
+ "manifest:create:force:source",
961
+ "manifest:create:source:force",
962
+ "force:source:create:manifest",
963
+ "source:force:create:manifest",
964
+ "source:create:force:manifest",
965
+ "source:create:manifest:force",
966
+ "force:create:source:manifest",
967
+ "create:force:source:manifest",
968
+ "create:source:force:manifest",
969
+ "create:source:manifest:force",
970
+ "force:create:manifest:source",
971
+ "create:force:manifest:source",
972
+ "create:manifest:force:source",
973
+ "create:manifest:source:force"
809
974
  ],
810
975
  "permutations": [
811
- "project:deploy:quick",
812
- "deploy:project:quick",
813
- "deploy:quick:project",
814
- "project:quick:deploy",
815
- "quick:project:deploy",
816
- "quick:deploy:project"
976
+ "project:generate:manifest",
977
+ "generate:project:manifest",
978
+ "generate:manifest:project",
979
+ "project:manifest:generate",
980
+ "manifest:project:generate",
981
+ "manifest:generate:project"
817
982
  ]
818
983
  },
819
- "project:deploy:report": {
984
+ "project:deploy:cancel": {
820
985
  "aliases": [
821
- "deploy:metadata:report"
986
+ "deploy:metadata:cancel"
822
987
  ],
823
988
  "args": {},
824
989
  "deprecateAliases": true,
825
- "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.",
990
+ "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.",
826
991
  "examples": [
827
- "Check the status using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
828
- "Check the status of the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent",
829
- "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"
992
+ "Cancel a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
993
+ "Cancel the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
830
994
  ],
831
995
  "flags": {
832
996
  "json": {
@@ -853,74 +1017,41 @@
853
1017
  "multiple": false,
854
1018
  "type": "option"
855
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 cancellation, run \"<%= config.bin %> project deploy resume\". To check the status of the cancellation, 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
+ },
856
1030
  "job-id": {
857
1031
  "char": "i",
858
1032
  "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.",
859
1033
  "name": "job-id",
860
- "summary": "Job ID of the deploy operation you want to check the status of.",
1034
+ "summary": "Job ID of the deploy operation you want to cancel.",
861
1035
  "hasDynamicHelp": false,
862
1036
  "multiple": false,
863
1037
  "type": "option"
864
1038
  },
865
1039
  "use-most-recent": {
866
1040
  "char": "r",
867
- "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.",
1041
+ "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.",
868
1042
  "name": "use-most-recent",
869
1043
  "summary": "Use the job ID of the most recent deploy operation.",
870
1044
  "allowNo": false,
871
1045
  "type": "boolean"
872
1046
  },
873
- "coverage-formatters": {
874
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
875
- "helpGroup": "Test",
876
- "name": "coverage-formatters",
877
- "summary": "Format of the code coverage results.",
878
- "hasDynamicHelp": false,
879
- "multiple": true,
880
- "options": [
881
- "clover",
882
- "cobertura",
883
- "html-spa",
884
- "html",
885
- "json",
886
- "json-summary",
887
- "lcovonly",
888
- "none",
889
- "teamcity",
890
- "text",
891
- "text-summary"
892
- ],
893
- "type": "option"
894
- },
895
- "junit": {
896
- "helpGroup": "Test",
897
- "name": "junit",
898
- "summary": "Output JUnit test results.",
899
- "allowNo": false,
900
- "type": "boolean"
901
- },
902
- "results-dir": {
903
- "helpGroup": "Test",
904
- "name": "results-dir",
905
- "relationships": [
906
- {
907
- "type": "some",
908
- "flags": [
909
- "coverage-formatters",
910
- "junit"
911
- ]
912
- }
913
- ],
914
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
915
- "hasDynamicHelp": false,
916
- "multiple": false,
917
- "type": "option"
918
- },
919
1047
  "wait": {
920
1048
  "char": "w",
921
- "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\".",
1049
+ "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\".",
1050
+ "exclusive": [
1051
+ "async"
1052
+ ],
922
1053
  "name": "wait",
923
- "summary": "Number of minutes to wait for command to complete and display results.",
1054
+ "summary": "Number of minutes to wait for the command to complete and display results.",
924
1055
  "hasDynamicHelp": true,
925
1056
  "helpValue": "<minutes>",
926
1057
  "multiple": false,
@@ -929,12 +1060,12 @@
929
1060
  },
930
1061
  "hasDynamicHelp": true,
931
1062
  "hiddenAliases": [],
932
- "id": "project:deploy:report",
1063
+ "id": "project:deploy:cancel",
933
1064
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
934
1065
  "pluginName": "@salesforce/plugin-deploy-retrieve",
935
1066
  "pluginType": "core",
936
1067
  "strict": true,
937
- "summary": "Check or poll for the status of a deploy operation.",
1068
+ "summary": "Cancel a deploy operation.",
938
1069
  "enableJsonFlag": true,
939
1070
  "isESM": true,
940
1071
  "relativePath": [
@@ -942,35 +1073,38 @@
942
1073
  "commands",
943
1074
  "project",
944
1075
  "deploy",
945
- "report.js"
1076
+ "cancel.js"
946
1077
  ],
947
1078
  "aliasPermutations": [
948
- "deploy:metadata:report",
949
- "metadata:deploy:report",
950
- "metadata:report:deploy",
951
- "deploy:report:metadata",
952
- "report:deploy:metadata",
953
- "report:metadata:deploy"
1079
+ "deploy:metadata:cancel",
1080
+ "metadata:deploy:cancel",
1081
+ "metadata:cancel:deploy",
1082
+ "deploy:cancel:metadata",
1083
+ "cancel:deploy:metadata",
1084
+ "cancel:metadata:deploy"
954
1085
  ],
955
1086
  "permutations": [
956
- "project:deploy:report",
957
- "deploy:project:report",
958
- "deploy:report:project",
959
- "project:report:deploy",
960
- "report:project:deploy",
961
- "report:deploy:project"
1087
+ "project:deploy:cancel",
1088
+ "deploy:project:cancel",
1089
+ "deploy:cancel:project",
1090
+ "project:cancel:deploy",
1091
+ "cancel:project:deploy",
1092
+ "cancel:deploy:project"
962
1093
  ]
963
1094
  },
964
- "project:deploy:resume": {
1095
+ "project:deploy:preview": {
965
1096
  "aliases": [
966
- "deploy:metadata:resume"
1097
+ "deploy:metadata:preview"
967
1098
  ],
968
1099
  "args": {},
969
1100
  "deprecateAliases": true,
970
- "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.",
1101
+ "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 --source-dir.",
971
1102
  "examples": [
972
- "Resume watching a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
973
- "Resume watching the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
1103
+ "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.",
1104
+ "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",
1105
+ "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",
1106
+ "Preview deployment of a specific Apex class:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass",
1107
+ "Preview deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
974
1108
  ],
975
1109
  "flags": {
976
1110
  "json": {
@@ -988,196 +1122,114 @@
988
1122
  "multiple": false,
989
1123
  "type": "option"
990
1124
  },
991
- "concise": {
992
- "exclusive": [
993
- "verbose"
994
- ],
995
- "name": "concise",
996
- "summary": "Show concise output of the deploy operation result.",
1125
+ "ignore-conflicts": {
1126
+ "char": "c",
1127
+ "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.",
1128
+ "name": "ignore-conflicts",
1129
+ "summary": "Don't display conflicts in preview of the deployment.",
997
1130
  "allowNo": false,
998
1131
  "type": "boolean"
999
1132
  },
1000
- "job-id": {
1001
- "char": "i",
1002
- "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.",
1003
- "name": "job-id",
1004
- "summary": "Job ID of the deploy operation you want to resume.",
1133
+ "manifest": {
1134
+ "char": "x",
1135
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1136
+ "exclusive": [
1137
+ "source-dir",
1138
+ "metadata"
1139
+ ],
1140
+ "name": "manifest",
1141
+ "summary": "Full file path for manifest (package.xml) of components to preview.",
1005
1142
  "hasDynamicHelp": false,
1006
1143
  "multiple": false,
1007
1144
  "type": "option"
1008
1145
  },
1009
- "use-most-recent": {
1010
- "char": "r",
1011
- "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.",
1012
- "name": "use-most-recent",
1013
- "summary": "Use the job ID of the most recent deploy operation.",
1014
- "allowNo": false,
1015
- "type": "boolean"
1016
- },
1017
- "verbose": {
1146
+ "metadata": {
1147
+ "char": "m",
1018
1148
  "exclusive": [
1019
- "concise"
1149
+ "manifest",
1150
+ "source-dir"
1020
1151
  ],
1021
- "name": "verbose",
1022
- "summary": "Show verbose output of the deploy operation result.",
1023
- "allowNo": false,
1024
- "type": "boolean"
1025
- },
1026
- "wait": {
1027
- "char": "w",
1028
- "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\".",
1029
- "name": "wait",
1030
- "summary": "Number of minutes to wait for the command to complete and display results.",
1031
- "hasDynamicHelp": true,
1032
- "helpValue": "<minutes>",
1033
- "multiple": false,
1034
- "type": "option"
1035
- },
1036
- "coverage-formatters": {
1037
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1038
- "helpGroup": "Test",
1039
- "name": "coverage-formatters",
1040
- "summary": "Format of the code coverage results.",
1152
+ "name": "metadata",
1153
+ "summary": "Metadata component names to preview.",
1041
1154
  "hasDynamicHelp": false,
1042
1155
  "multiple": true,
1043
- "options": [
1044
- "clover",
1045
- "cobertura",
1046
- "html-spa",
1047
- "html",
1048
- "json",
1049
- "json-summary",
1050
- "lcovonly",
1051
- "none",
1052
- "teamcity",
1053
- "text",
1054
- "text-summary"
1055
- ],
1056
1156
  "type": "option"
1057
1157
  },
1058
- "junit": {
1059
- "helpGroup": "Test",
1060
- "name": "junit",
1061
- "summary": "Output JUnit test results.",
1062
- "allowNo": false,
1063
- "type": "boolean"
1064
- },
1065
- "results-dir": {
1066
- "helpGroup": "Test",
1067
- "name": "results-dir",
1068
- "relationships": [
1069
- {
1070
- "type": "some",
1071
- "flags": [
1072
- "coverage-formatters",
1073
- "junit"
1074
- ]
1075
- }
1158
+ "source-dir": {
1159
+ "char": "d",
1160
+ "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.",
1161
+ "exclusive": [
1162
+ "manifest",
1163
+ "metadata"
1076
1164
  ],
1077
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1165
+ "name": "source-dir",
1166
+ "summary": "Path to the local source files to preview.",
1078
1167
  "hasDynamicHelp": false,
1168
+ "multiple": true,
1169
+ "type": "option"
1170
+ },
1171
+ "target-org": {
1172
+ "char": "o",
1173
+ "name": "target-org",
1174
+ "noCacheDefault": true,
1175
+ "required": true,
1176
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1177
+ "hasDynamicHelp": true,
1079
1178
  "multiple": false,
1080
1179
  "type": "option"
1180
+ },
1181
+ "concise": {
1182
+ "name": "concise",
1183
+ "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
1184
+ "allowNo": false,
1185
+ "type": "boolean"
1081
1186
  }
1082
1187
  },
1083
1188
  "hasDynamicHelp": true,
1084
1189
  "hiddenAliases": [],
1085
- "id": "project:deploy:resume",
1190
+ "id": "project:deploy:preview",
1086
1191
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1087
1192
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1088
1193
  "pluginType": "core",
1089
1194
  "strict": true,
1090
- "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1195
+ "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
1091
1196
  "enableJsonFlag": true,
1092
- "envVariablesSection": {
1093
- "header": "ENVIRONMENT VARIABLES",
1094
- "body": [
1095
- {
1096
- "name": "SF_USE_PROGRESS_BAR",
1097
- "description": "Set to false to disable the progress bar when running the metadata deploy command."
1098
- }
1099
- ]
1100
- },
1101
- "errorCodes": {
1102
- "header": "ERROR CODES",
1103
- "body": [
1104
- {
1105
- "name": "Succeeded (0)",
1106
- "description": "The deploy succeeded."
1107
- },
1108
- {
1109
- "name": "Canceled (1)",
1110
- "description": "The deploy was canceled."
1111
- },
1112
- {
1113
- "name": "Failed (1)",
1114
- "description": "The deploy failed."
1115
- },
1116
- {
1117
- "name": "SucceededPartial (68)",
1118
- "description": "The deploy partially succeeded."
1119
- },
1120
- {
1121
- "name": "InProgress (69)",
1122
- "description": "The deploy is in progress."
1123
- },
1124
- {
1125
- "name": "Pending (69)",
1126
- "description": "The deploy is pending."
1127
- },
1128
- {
1129
- "name": "Canceling (69)",
1130
- "description": "The deploy is being canceled."
1131
- }
1132
- ]
1133
- },
1197
+ "requiresProject": true,
1134
1198
  "isESM": true,
1135
1199
  "relativePath": [
1136
1200
  "lib",
1137
1201
  "commands",
1138
1202
  "project",
1139
1203
  "deploy",
1140
- "resume.js"
1204
+ "preview.js"
1141
1205
  ],
1142
1206
  "aliasPermutations": [
1143
- "deploy:metadata:resume",
1144
- "metadata:deploy:resume",
1145
- "metadata:resume:deploy",
1146
- "deploy:resume:metadata",
1147
- "resume:deploy:metadata",
1148
- "resume:metadata:deploy"
1207
+ "deploy:metadata:preview",
1208
+ "metadata:deploy:preview",
1209
+ "metadata:preview:deploy",
1210
+ "deploy:preview:metadata",
1211
+ "preview:deploy:metadata",
1212
+ "preview:metadata:deploy"
1149
1213
  ],
1150
1214
  "permutations": [
1151
- "project:deploy:resume",
1152
- "deploy:project:resume",
1153
- "deploy:resume:project",
1154
- "project:resume:deploy",
1155
- "resume:project:deploy",
1156
- "resume:deploy:project"
1215
+ "project:deploy:preview",
1216
+ "deploy:project:preview",
1217
+ "deploy:preview:project",
1218
+ "project:preview:deploy",
1219
+ "preview:project:deploy",
1220
+ "preview:deploy:project"
1157
1221
  ]
1158
1222
  },
1159
- "project:deploy:start": {
1223
+ "project:deploy:quick": {
1160
1224
  "aliases": [
1161
- "deploy:metadata"
1225
+ "deploy:metadata:quick"
1162
1226
  ],
1163
1227
  "args": {},
1164
1228
  "deprecateAliases": true,
1165
- "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 --source-dir.",
1229
+ "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.",
1166
1230
  "examples": [
1167
- "Deploy local changes not in the org; uses your default org:\n<%= config.bin %> <%= command.id %>",
1168
- "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",
1169
- "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",
1170
- "Deploy all Apex classes that are in all package directories defined in the \"sfdx-project.json\" file:\n<%= config.bin %> <%= command.id %> --metadata ApexClass",
1171
- "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",
1172
- "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",
1173
- "Deploy a custom object called ExcitingObject that's in the SBQQ namespace:\nsf <%= command.id %> --metadata CustomObject:SBQQ__ExcitingObject",
1174
- "Deploy all custom objects in the SBQQ namespace by using a wildcard and quotes:\nsf <%= command.id %> --metadata 'CustomObject:SBQQ__*'",
1175
- "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",
1176
- "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\"",
1177
- "Deploy all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml",
1178
- "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",
1179
- "Deploy all metadata formatted files in the \"MDAPI\" directory:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI",
1180
- "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"
1231
+ "Run a quick deploy to your default org using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1232
+ "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"
1181
1233
  ],
1182
1234
  "flags": {
1183
1235
  "json": {
@@ -1195,17 +1247,8 @@
1195
1247
  "multiple": false,
1196
1248
  "type": "option"
1197
1249
  },
1198
- "api-version": {
1199
- "char": "a",
1200
- "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.",
1201
- "name": "api-version",
1202
- "summary": "Target API version for the deploy.",
1203
- "hasDynamicHelp": false,
1204
- "multiple": false,
1205
- "type": "option"
1206
- },
1207
1250
  "async": {
1208
- "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\".",
1251
+ "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\".",
1209
1252
  "exclusive": [
1210
1253
  "wait"
1211
1254
  ],
@@ -1223,202 +1266,186 @@
1223
1266
  "allowNo": false,
1224
1267
  "type": "boolean"
1225
1268
  },
1226
- "dry-run": {
1227
- "name": "dry-run",
1228
- "summary": "Validate deploy and run Apex tests but don’t save to the org.",
1229
- "allowNo": false,
1230
- "type": "boolean"
1269
+ "job-id": {
1270
+ "char": "i",
1271
+ "description": "The job ID is valid for 10 days from when you started the validation.",
1272
+ "name": "job-id",
1273
+ "summary": "Job ID of the deployment you want to quick deploy.",
1274
+ "hasDynamicHelp": false,
1275
+ "multiple": false,
1276
+ "type": "option"
1231
1277
  },
1232
- "ignore-conflicts": {
1233
- "char": "c",
1234
- "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.",
1235
- "name": "ignore-conflicts",
1236
- "summary": "Ignore conflicts and deploy local files, even if they overwrite changes in the org.",
1237
- "allowNo": false,
1238
- "type": "boolean"
1278
+ "target-org": {
1279
+ "char": "o",
1280
+ "name": "target-org",
1281
+ "noCacheDefault": true,
1282
+ "summary": "Username or alias of the target org.",
1283
+ "hasDynamicHelp": true,
1284
+ "multiple": false,
1285
+ "type": "option"
1239
1286
  },
1240
- "ignore-errors": {
1287
+ "use-most-recent": {
1241
1288
  "char": "r",
1242
- "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.",
1243
- "name": "ignore-errors",
1244
- "summary": "Ignore any errors and don’t roll back deployment.",
1289
+ "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.",
1290
+ "name": "use-most-recent",
1291
+ "summary": "Use the job ID of the most recently validated deployment.",
1245
1292
  "allowNo": false,
1246
1293
  "type": "boolean"
1247
1294
  },
1248
- "ignore-warnings": {
1249
- "char": "g",
1250
- "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.",
1251
- "name": "ignore-warnings",
1252
- "summary": "Ignore warnings and allow a deployment to complete successfully.",
1295
+ "verbose": {
1296
+ "exclusive": [
1297
+ "concise"
1298
+ ],
1299
+ "name": "verbose",
1300
+ "summary": "Show verbose output of the deploy result.",
1253
1301
  "allowNo": false,
1254
1302
  "type": "boolean"
1255
1303
  },
1256
- "manifest": {
1257
- "char": "x",
1258
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1304
+ "wait": {
1305
+ "char": "w",
1306
+ "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\".",
1259
1307
  "exclusive": [
1260
- "source-dir",
1261
- "metadata",
1262
- "metadata-dir"
1308
+ "async"
1263
1309
  ],
1264
- "helpGroup": "Source Format",
1265
- "name": "manifest",
1266
- "summary": "Full file path for manifest (package.xml) of components to deploy.",
1267
- "hasDynamicHelp": false,
1310
+ "name": "wait",
1311
+ "summary": "Number of minutes to wait for the command to complete and display results.",
1312
+ "default": "33 minutes",
1313
+ "hasDynamicHelp": true,
1314
+ "helpValue": "<minutes>",
1268
1315
  "multiple": false,
1269
1316
  "type": "option"
1270
1317
  },
1271
- "metadata": {
1272
- "char": "m",
1273
- "exclusive": [
1274
- "manifest",
1275
- "source-dir",
1276
- "metadata-dir"
1277
- ],
1278
- "helpGroup": "Source Format",
1279
- "name": "metadata",
1280
- "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1281
- "hasDynamicHelp": false,
1282
- "multiple": true,
1283
- "type": "option"
1284
- },
1285
- "metadata-dir": {
1286
- "exclusive": [
1287
- "manifest",
1288
- "source-dir",
1289
- "metadata"
1290
- ],
1291
- "helpGroup": "Metadata API Format",
1292
- "name": "metadata-dir",
1293
- "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1318
+ "api-version": {
1319
+ "char": "a",
1320
+ "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.",
1321
+ "name": "api-version",
1322
+ "summary": "Target API version for the deploy.",
1294
1323
  "hasDynamicHelp": false,
1295
1324
  "multiple": false,
1296
1325
  "type": "option"
1297
- },
1298
- "single-package": {
1299
- "dependsOn": [
1300
- "metadata-dir"
1301
- ],
1302
- "helpGroup": "Metadata API Format",
1303
- "name": "single-package",
1304
- "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1326
+ }
1327
+ },
1328
+ "hasDynamicHelp": true,
1329
+ "hiddenAliases": [],
1330
+ "id": "project:deploy:quick",
1331
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1332
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
1333
+ "pluginType": "core",
1334
+ "strict": true,
1335
+ "summary": "Quickly deploy a validated deployment to an org.",
1336
+ "enableJsonFlag": true,
1337
+ "errorCodes": {
1338
+ "header": "ERROR CODES",
1339
+ "body": [
1340
+ {
1341
+ "name": "Succeeded (0)",
1342
+ "description": "The deploy succeeded."
1343
+ },
1344
+ {
1345
+ "name": "Canceled (1)",
1346
+ "description": "The deploy was canceled."
1347
+ },
1348
+ {
1349
+ "name": "Failed (1)",
1350
+ "description": "The deploy failed."
1351
+ },
1352
+ {
1353
+ "name": "SucceededPartial (68)",
1354
+ "description": "The deploy partially succeeded."
1355
+ },
1356
+ {
1357
+ "name": "InProgress (69)",
1358
+ "description": "The deploy is in progress."
1359
+ },
1360
+ {
1361
+ "name": "Pending (69)",
1362
+ "description": "The deploy is pending."
1363
+ },
1364
+ {
1365
+ "name": "Canceling (69)",
1366
+ "description": "The deploy is being canceled."
1367
+ }
1368
+ ]
1369
+ },
1370
+ "isESM": true,
1371
+ "relativePath": [
1372
+ "lib",
1373
+ "commands",
1374
+ "project",
1375
+ "deploy",
1376
+ "quick.js"
1377
+ ],
1378
+ "aliasPermutations": [
1379
+ "deploy:metadata:quick",
1380
+ "metadata:deploy:quick",
1381
+ "metadata:quick:deploy",
1382
+ "deploy:quick:metadata",
1383
+ "quick:deploy:metadata",
1384
+ "quick:metadata:deploy"
1385
+ ],
1386
+ "permutations": [
1387
+ "project:deploy:quick",
1388
+ "deploy:project:quick",
1389
+ "deploy:quick:project",
1390
+ "project:quick:deploy",
1391
+ "quick:project:deploy",
1392
+ "quick:deploy:project"
1393
+ ]
1394
+ },
1395
+ "project:deploy:report": {
1396
+ "aliases": [
1397
+ "deploy:metadata:report"
1398
+ ],
1399
+ "args": {},
1400
+ "deprecateAliases": true,
1401
+ "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.",
1402
+ "examples": [
1403
+ "Check the status using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1404
+ "Check the status of the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent",
1405
+ "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"
1406
+ ],
1407
+ "flags": {
1408
+ "json": {
1409
+ "description": "Format output as json.",
1410
+ "helpGroup": "GLOBAL",
1411
+ "name": "json",
1305
1412
  "allowNo": false,
1306
1413
  "type": "boolean"
1307
1414
  },
1308
- "source-dir": {
1309
- "char": "d",
1310
- "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.",
1311
- "exclusive": [
1312
- "manifest",
1313
- "metadata",
1314
- "metadata-dir"
1315
- ],
1316
- "helpGroup": "Source Format",
1317
- "name": "source-dir",
1318
- "summary": "Path to the local source files to deploy.",
1415
+ "flags-dir": {
1416
+ "helpGroup": "GLOBAL",
1417
+ "name": "flags-dir",
1418
+ "summary": "Import flag values from a directory.",
1319
1419
  "hasDynamicHelp": false,
1320
- "multiple": true,
1420
+ "multiple": false,
1321
1421
  "type": "option"
1322
1422
  },
1323
1423
  "target-org": {
1324
1424
  "char": "o",
1325
1425
  "name": "target-org",
1326
1426
  "noCacheDefault": true,
1327
- "required": true,
1328
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1427
+ "summary": "Username or alias of the target org.",
1329
1428
  "hasDynamicHelp": true,
1330
1429
  "multiple": false,
1331
1430
  "type": "option"
1332
1431
  },
1333
- "tests": {
1334
- "char": "t",
1335
- "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\"",
1336
- "helpGroup": "Test",
1337
- "name": "tests",
1338
- "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
1339
- "hasDynamicHelp": false,
1340
- "multiple": true,
1341
- "type": "option"
1342
- },
1343
- "test-level": {
1344
- "char": "l",
1345
- "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- RunRelevantTests (Beta) — Runs only tests that are relevant to the files being deployed. Salesforce automatically identifies the relevant tests based on an analysis of the deployment payload and the payload dependencies. For fine-grained control, you can also annotate test classes so that they always run in certain conditions. See \"@IsTest Annotation\" in the \"Apex Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_isTest.htm). Each class and trigger in the deployment package must be covered by the executed tests for a minimum of 75% code coverage. This coverage is computed for each class and triggers individually and is different than the overall coverage percentage.\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\" (https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
1346
- "helpGroup": "Test",
1347
- "name": "test-level",
1348
- "summary": "Deployment Apex testing level.",
1432
+ "job-id": {
1433
+ "char": "i",
1434
+ "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.",
1435
+ "name": "job-id",
1436
+ "summary": "Job ID of the deploy operation you want to check the status of.",
1349
1437
  "hasDynamicHelp": false,
1350
1438
  "multiple": false,
1351
- "options": [
1352
- "NoTestRun",
1353
- "RunSpecifiedTests",
1354
- "RunLocalTests",
1355
- "RunAllTestsInOrg",
1356
- "RunRelevantTests"
1357
- ],
1358
- "type": "option"
1359
- },
1360
- "verbose": {
1361
- "exclusive": [
1362
- "concise"
1363
- ],
1364
- "name": "verbose",
1365
- "summary": "Show verbose output of the deploy result.",
1366
- "allowNo": false,
1367
- "type": "boolean"
1368
- },
1369
- "wait": {
1370
- "char": "w",
1371
- "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\".",
1372
- "exclusive": [
1373
- "async"
1374
- ],
1375
- "name": "wait",
1376
- "summary": "Number of minutes to wait for command to complete and display results.",
1377
- "hasDynamicHelp": true,
1378
- "helpValue": "<minutes>",
1379
- "multiple": false,
1380
1439
  "type": "option"
1381
1440
  },
1382
- "purge-on-delete": {
1383
- "helpGroup": "Delete",
1384
- "name": "purge-on-delete",
1385
- "relationships": [
1386
- {
1387
- "type": "some",
1388
- "flags": [
1389
- "pre-destructive-changes",
1390
- "manifest",
1391
- "metadata-dir",
1392
- "post-destructive-changes"
1393
- ]
1394
- }
1395
- ],
1396
- "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1441
+ "use-most-recent": {
1442
+ "char": "r",
1443
+ "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.",
1444
+ "name": "use-most-recent",
1445
+ "summary": "Use the job ID of the most recent deploy operation.",
1397
1446
  "allowNo": false,
1398
1447
  "type": "boolean"
1399
1448
  },
1400
- "pre-destructive-changes": {
1401
- "dependsOn": [
1402
- "manifest"
1403
- ],
1404
- "helpGroup": "Delete",
1405
- "name": "pre-destructive-changes",
1406
- "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy.",
1407
- "hasDynamicHelp": false,
1408
- "multiple": false,
1409
- "type": "option"
1410
- },
1411
- "post-destructive-changes": {
1412
- "dependsOn": [
1413
- "manifest"
1414
- ],
1415
- "helpGroup": "Delete",
1416
- "name": "post-destructive-changes",
1417
- "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1418
- "hasDynamicHelp": false,
1419
- "multiple": false,
1420
- "type": "option"
1421
- },
1422
1449
  "coverage-formatters": {
1423
1450
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1424
1451
  "helpGroup": "Test",
@@ -1464,110 +1491,62 @@
1464
1491
  "hasDynamicHelp": false,
1465
1492
  "multiple": false,
1466
1493
  "type": "option"
1494
+ },
1495
+ "wait": {
1496
+ "char": "w",
1497
+ "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\".",
1498
+ "name": "wait",
1499
+ "summary": "Number of minutes to wait for command to complete and display results.",
1500
+ "hasDynamicHelp": true,
1501
+ "helpValue": "<minutes>",
1502
+ "multiple": false,
1503
+ "type": "option"
1467
1504
  }
1468
1505
  },
1469
1506
  "hasDynamicHelp": true,
1470
1507
  "hiddenAliases": [],
1471
- "id": "project:deploy:start",
1508
+ "id": "project:deploy:report",
1472
1509
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1473
1510
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1474
1511
  "pluginType": "core",
1475
1512
  "strict": true,
1476
- "summary": "Deploy metadata to an org from your local project.",
1513
+ "summary": "Check or poll for the status of a deploy operation.",
1477
1514
  "enableJsonFlag": true,
1478
- "configurationVariablesSection": {
1479
- "header": "CONFIGURATION VARIABLES",
1480
- "body": [
1481
- {
1482
- "name": "target-org",
1483
- "description": "Username or alias of the org that all commands run against by default. (sf only)"
1484
- },
1485
- {
1486
- "name": "org-api-version",
1487
- "description": "API version of your project. Default: API version of your Dev Hub org."
1488
- }
1489
- ]
1490
- },
1491
- "envVariablesSection": {
1492
- "header": "ENVIRONMENT VARIABLES",
1493
- "body": [
1494
- {
1495
- "name": "SF_TARGET_ORG",
1496
- "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1497
- },
1498
- {
1499
- "name": "SF_USE_PROGRESS_BAR",
1500
- "description": "Set to false to disable the progress bar when running the metadata deploy command."
1501
- }
1502
- ]
1503
- },
1504
- "errorCodes": {
1505
- "header": "ERROR CODES",
1506
- "body": [
1507
- {
1508
- "name": "Succeeded (0)",
1509
- "description": "The deploy succeeded."
1510
- },
1511
- {
1512
- "name": "Canceled (1)",
1513
- "description": "The deploy was canceled."
1514
- },
1515
- {
1516
- "name": "Failed (1)",
1517
- "description": "The deploy failed."
1518
- },
1519
- {
1520
- "name": "SucceededPartial (68)",
1521
- "description": "The deploy partially succeeded."
1522
- },
1523
- {
1524
- "name": "InProgress (69)",
1525
- "description": "The deploy is in progress."
1526
- },
1527
- {
1528
- "name": "Pending (69)",
1529
- "description": "The deploy is pending."
1530
- },
1531
- {
1532
- "name": "Canceling (69)",
1533
- "description": "The deploy is being canceled."
1534
- }
1535
- ]
1536
- },
1537
1515
  "isESM": true,
1538
1516
  "relativePath": [
1539
1517
  "lib",
1540
1518
  "commands",
1541
1519
  "project",
1542
1520
  "deploy",
1543
- "start.js"
1521
+ "report.js"
1544
1522
  ],
1545
1523
  "aliasPermutations": [
1546
- "deploy:metadata",
1547
- "metadata:deploy"
1524
+ "deploy:metadata:report",
1525
+ "metadata:deploy:report",
1526
+ "metadata:report:deploy",
1527
+ "deploy:report:metadata",
1528
+ "report:deploy:metadata",
1529
+ "report:metadata:deploy"
1548
1530
  ],
1549
1531
  "permutations": [
1550
- "project:deploy:start",
1551
- "deploy:project:start",
1552
- "deploy:start:project",
1553
- "project:start:deploy",
1554
- "start:project:deploy",
1555
- "start:deploy:project"
1532
+ "project:deploy:report",
1533
+ "deploy:project:report",
1534
+ "deploy:report:project",
1535
+ "project:report:deploy",
1536
+ "report:project:deploy",
1537
+ "report:deploy:project"
1556
1538
  ]
1557
1539
  },
1558
- "project:deploy:validate": {
1540
+ "project:deploy:resume": {
1559
1541
  "aliases": [
1560
- "deploy:metadata:validate"
1542
+ "deploy:metadata:resume"
1561
1543
  ],
1562
1544
  "args": {},
1563
1545
  "deprecateAliases": true,
1564
- "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 --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.",
1546
+ "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.",
1565
1547
  "examples": [
1566
- "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.",
1567
- "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",
1568
- "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",
1569
- "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",
1570
- "Validate the deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
1548
+ "Resume watching a deploy operation using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 0Af0x000017yLUFCA2",
1549
+ "Resume watching the most recent deploy operation:\n<%= config.bin %> <%= command.id %> --use-most-recent"
1571
1550
  ],
1572
1551
  "flags": {
1573
1552
  "json": {
@@ -1585,127 +1564,44 @@
1585
1564
  "multiple": false,
1586
1565
  "type": "option"
1587
1566
  },
1588
- "api-version": {
1589
- "char": "a",
1590
- "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.",
1591
- "name": "api-version",
1592
- "summary": "Target API version for the validation.",
1593
- "hasDynamicHelp": false,
1594
- "multiple": false,
1595
- "type": "option"
1596
- },
1597
- "async": {
1598
- "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\".",
1599
- "name": "async",
1600
- "summary": "Run the command asynchronously.",
1601
- "allowNo": false,
1602
- "type": "boolean"
1603
- },
1604
1567
  "concise": {
1605
1568
  "exclusive": [
1606
1569
  "verbose"
1607
1570
  ],
1608
1571
  "name": "concise",
1609
- "summary": "Show concise output of the validation result.",
1572
+ "summary": "Show concise output of the deploy operation result.",
1610
1573
  "allowNo": false,
1611
1574
  "type": "boolean"
1612
1575
  },
1613
- "manifest": {
1614
- "char": "x",
1615
- "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1616
- "helpGroup": "Source Format",
1617
- "name": "manifest",
1618
- "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
1619
- "hasDynamicHelp": false,
1620
- "multiple": false,
1621
- "type": "option"
1622
- },
1623
- "metadata": {
1624
- "char": "m",
1625
- "helpGroup": "Source Format",
1626
- "name": "metadata",
1627
- "summary": "Metadata component names to validate for deployment.",
1628
- "hasDynamicHelp": false,
1629
- "multiple": true,
1630
- "type": "option"
1631
- },
1632
- "source-dir": {
1633
- "char": "d",
1634
- "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.",
1635
- "helpGroup": "Source Format",
1636
- "name": "source-dir",
1637
- "summary": "Path to the local source files to validate for deployment.",
1638
- "hasDynamicHelp": false,
1639
- "multiple": true,
1640
- "type": "option"
1641
- },
1642
- "metadata-dir": {
1643
- "helpGroup": "Metadata API Format",
1644
- "name": "metadata-dir",
1645
- "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1576
+ "job-id": {
1577
+ "char": "i",
1578
+ "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.",
1579
+ "name": "job-id",
1580
+ "summary": "Job ID of the deploy operation you want to resume.",
1646
1581
  "hasDynamicHelp": false,
1647
1582
  "multiple": false,
1648
1583
  "type": "option"
1649
1584
  },
1650
- "single-package": {
1651
- "dependsOn": [
1652
- "metadata-dir"
1653
- ],
1654
- "helpGroup": "Metadata API Format",
1655
- "name": "single-package",
1656
- "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1585
+ "use-most-recent": {
1586
+ "char": "r",
1587
+ "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.",
1588
+ "name": "use-most-recent",
1589
+ "summary": "Use the job ID of the most recent deploy operation.",
1657
1590
  "allowNo": false,
1658
1591
  "type": "boolean"
1659
1592
  },
1660
- "target-org": {
1661
- "char": "o",
1662
- "name": "target-org",
1663
- "noCacheDefault": true,
1664
- "required": true,
1665
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1666
- "hasDynamicHelp": true,
1667
- "multiple": false,
1668
- "type": "option"
1669
- },
1670
- "tests": {
1671
- "char": "t",
1672
- "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\"",
1673
- "helpGroup": "Test",
1674
- "name": "tests",
1675
- "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
1676
- "hasDynamicHelp": false,
1677
- "multiple": true,
1678
- "type": "option"
1679
- },
1680
- "test-level": {
1681
- "char": "l",
1682
- "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.\n\n- RunRelevantTests (Beta) — Runs only tests that are relevant to the files being deployed. Salesforce automatically identifies the relevant tests based on an analysis of the deployment payload and the payload dependencies. For fine-grained control, you can also annotate test classes so that they always run in certain conditions. See \"@IsTest Annotation\" in the \"Apex Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_isTest.htm). Each class and trigger in the deployment package must be covered by the executed tests for a minimum of 75% code coverage. This coverage is computed for each class and triggers individually and is different than the overall coverage percentage.\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\" (https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
1683
- "helpGroup": "Test",
1684
- "name": "test-level",
1685
- "summary": "Deployment Apex testing level.",
1686
- "default": "RunLocalTests",
1687
- "hasDynamicHelp": false,
1688
- "multiple": false,
1689
- "options": [
1690
- "RunAllTestsInOrg",
1691
- "RunLocalTests",
1692
- "RunSpecifiedTests",
1693
- "RunRelevantTests"
1694
- ],
1695
- "type": "option"
1696
- },
1697
1593
  "verbose": {
1698
1594
  "exclusive": [
1699
1595
  "concise"
1700
1596
  ],
1701
1597
  "name": "verbose",
1702
- "summary": "Show verbose output of the validation result.",
1598
+ "summary": "Show verbose output of the deploy operation result.",
1703
1599
  "allowNo": false,
1704
1600
  "type": "boolean"
1705
1601
  },
1706
1602
  "wait": {
1707
1603
  "char": "w",
1708
- "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\".",
1604
+ "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\".",
1709
1605
  "name": "wait",
1710
1606
  "summary": "Number of minutes to wait for the command to complete and display results.",
1711
1607
  "hasDynamicHelp": true,
@@ -1713,14 +1609,6 @@
1713
1609
  "multiple": false,
1714
1610
  "type": "option"
1715
1611
  },
1716
- "ignore-warnings": {
1717
- "char": "g",
1718
- "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.",
1719
- "name": "ignore-warnings",
1720
- "summary": "Ignore warnings and allow a deployment to complete successfully.",
1721
- "allowNo": false,
1722
- "type": "boolean"
1723
- },
1724
1612
  "coverage-formatters": {
1725
1613
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1726
1614
  "helpGroup": "Test",
@@ -1766,78 +1654,20 @@
1766
1654
  "hasDynamicHelp": false,
1767
1655
  "multiple": false,
1768
1656
  "type": "option"
1769
- },
1770
- "purge-on-delete": {
1771
- "dependsOn": [
1772
- "manifest"
1773
- ],
1774
- "helpGroup": "Delete",
1775
- "name": "purge-on-delete",
1776
- "relationships": [
1777
- {
1778
- "type": "some",
1779
- "flags": [
1780
- "pre-destructive-changes",
1781
- "post-destructive-changes"
1782
- ]
1783
- }
1784
- ],
1785
- "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
1786
- "allowNo": false,
1787
- "type": "boolean"
1788
- },
1789
- "pre-destructive-changes": {
1790
- "dependsOn": [
1791
- "manifest"
1792
- ],
1793
- "helpGroup": "Delete",
1794
- "name": "pre-destructive-changes",
1795
- "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
1796
- "hasDynamicHelp": false,
1797
- "multiple": false,
1798
- "type": "option"
1799
- },
1800
- "post-destructive-changes": {
1801
- "dependsOn": [
1802
- "manifest"
1803
- ],
1804
- "helpGroup": "Delete",
1805
- "name": "post-destructive-changes",
1806
- "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1807
- "hasDynamicHelp": false,
1808
- "multiple": false,
1809
- "type": "option"
1810
1657
  }
1811
1658
  },
1812
1659
  "hasDynamicHelp": true,
1813
1660
  "hiddenAliases": [],
1814
- "id": "project:deploy:validate",
1661
+ "id": "project:deploy:resume",
1815
1662
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1816
1663
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1817
1664
  "pluginType": "core",
1818
1665
  "strict": true,
1819
- "summary": "Validate a metadata deployment without actually executing it.",
1666
+ "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1820
1667
  "enableJsonFlag": true,
1821
- "configurationVariablesSection": {
1822
- "header": "CONFIGURATION VARIABLES",
1668
+ "envVariablesSection": {
1669
+ "header": "ENVIRONMENT VARIABLES",
1823
1670
  "body": [
1824
- {
1825
- "name": "target-org",
1826
- "description": "Username or alias of the org that all commands run against by default. (sf only)"
1827
- },
1828
- {
1829
- "name": "org-api-version",
1830
- "description": "API version of your project. Default: API version of your Dev Hub org."
1831
- }
1832
- ]
1833
- },
1834
- "envVariablesSection": {
1835
- "header": "ENVIRONMENT VARIABLES",
1836
- "body": [
1837
- {
1838
- "name": "SF_TARGET_ORG",
1839
- "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1840
- },
1841
1671
  {
1842
1672
  "name": "SF_USE_PROGRESS_BAR",
1843
1673
  "description": "Set to false to disable the progress bar when running the metadata deploy command."
@@ -1883,37 +1713,47 @@
1883
1713
  "commands",
1884
1714
  "project",
1885
1715
  "deploy",
1886
- "validate.js"
1716
+ "resume.js"
1887
1717
  ],
1888
1718
  "aliasPermutations": [
1889
- "deploy:metadata:validate",
1890
- "metadata:deploy:validate",
1891
- "metadata:validate:deploy",
1892
- "deploy:validate:metadata",
1893
- "validate:deploy:metadata",
1894
- "validate:metadata:deploy"
1719
+ "deploy:metadata:resume",
1720
+ "metadata:deploy:resume",
1721
+ "metadata:resume:deploy",
1722
+ "deploy:resume:metadata",
1723
+ "resume:deploy:metadata",
1724
+ "resume:metadata:deploy"
1895
1725
  ],
1896
1726
  "permutations": [
1897
- "project:deploy:validate",
1898
- "deploy:project:validate",
1899
- "deploy:validate:project",
1900
- "project:validate:deploy",
1901
- "validate:project:deploy",
1902
- "validate:deploy:project"
1727
+ "project:deploy:resume",
1728
+ "deploy:project:resume",
1729
+ "deploy:resume:project",
1730
+ "project:resume:deploy",
1731
+ "resume:project:deploy",
1732
+ "resume:deploy:project"
1903
1733
  ]
1904
1734
  },
1905
- "project:delete:source": {
1735
+ "project:deploy:start": {
1906
1736
  "aliases": [
1907
- "force:source:delete"
1737
+ "deploy:metadata"
1908
1738
  ],
1909
1739
  "args": {},
1910
1740
  "deprecateAliases": true,
1911
- "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 --source-dir.",
1741
+ "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 --source-dir.",
1912
1742
  "examples": [
1913
- "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",
1914
- "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",
1915
- "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",
1916
- "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"
1743
+ "Deploy local changes not in the org; uses your default org:\n<%= config.bin %> <%= command.id %>",
1744
+ "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",
1745
+ "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",
1746
+ "Deploy all Apex classes that are in all package directories defined in the \"sfdx-project.json\" file:\n<%= config.bin %> <%= command.id %> --metadata ApexClass",
1747
+ "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",
1748
+ "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",
1749
+ "Deploy a custom object called ExcitingObject that's in the SBQQ namespace:\nsf <%= command.id %> --metadata CustomObject:SBQQ__ExcitingObject",
1750
+ "Deploy all custom objects in the SBQQ namespace by using a wildcard and quotes:\nsf <%= command.id %> --metadata 'CustomObject:SBQQ__*'",
1751
+ "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",
1752
+ "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\"",
1753
+ "Deploy all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml",
1754
+ "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",
1755
+ "Deploy all metadata formatted files in the \"MDAPI\" directory:\n<%= config.bin %> <%= command.id %> --metadata-dir MDAPI",
1756
+ "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"
1917
1757
  ],
1918
1758
  "flags": {
1919
1759
  "json": {
@@ -1932,63 +1772,142 @@
1932
1772
  "type": "option"
1933
1773
  },
1934
1774
  "api-version": {
1935
- "aliases": [
1936
- "apiversion"
1937
- ],
1938
- "deprecateAliases": true,
1939
- "description": "Override the api version used for api requests made by this command",
1775
+ "char": "a",
1776
+ "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.",
1940
1777
  "name": "api-version",
1778
+ "summary": "Target API version for the deploy.",
1941
1779
  "hasDynamicHelp": false,
1942
1780
  "multiple": false,
1943
1781
  "type": "option"
1944
1782
  },
1945
- "loglevel": {
1946
- "deprecated": {
1947
- "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."
1948
- },
1949
- "hidden": true,
1950
- "name": "loglevel",
1783
+ "async": {
1784
+ "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\".",
1785
+ "exclusive": [
1786
+ "wait"
1787
+ ],
1788
+ "name": "async",
1789
+ "summary": "Run the command asynchronously.",
1790
+ "allowNo": false,
1791
+ "type": "boolean"
1792
+ },
1793
+ "concise": {
1794
+ "exclusive": [
1795
+ "verbose"
1796
+ ],
1797
+ "name": "concise",
1798
+ "summary": "Show concise output of the deploy result.",
1799
+ "allowNo": false,
1800
+ "type": "boolean"
1801
+ },
1802
+ "dry-run": {
1803
+ "name": "dry-run",
1804
+ "summary": "Validate deploy and run Apex tests but don’t save to the org.",
1805
+ "allowNo": false,
1806
+ "type": "boolean"
1807
+ },
1808
+ "ignore-conflicts": {
1809
+ "char": "c",
1810
+ "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.",
1811
+ "name": "ignore-conflicts",
1812
+ "summary": "Ignore conflicts and deploy local files, even if they overwrite changes in the org.",
1813
+ "allowNo": false,
1814
+ "type": "boolean"
1815
+ },
1816
+ "ignore-errors": {
1817
+ "char": "r",
1818
+ "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.",
1819
+ "name": "ignore-errors",
1820
+ "summary": "Ignore any errors and don’t roll back deployment.",
1821
+ "allowNo": false,
1822
+ "type": "boolean"
1823
+ },
1824
+ "ignore-warnings": {
1825
+ "char": "g",
1826
+ "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.",
1827
+ "name": "ignore-warnings",
1828
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
1829
+ "allowNo": false,
1830
+ "type": "boolean"
1831
+ },
1832
+ "manifest": {
1833
+ "char": "x",
1834
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1835
+ "exclusive": [
1836
+ "source-dir",
1837
+ "metadata",
1838
+ "metadata-dir"
1839
+ ],
1840
+ "helpGroup": "Source Format",
1841
+ "name": "manifest",
1842
+ "summary": "Full file path for manifest (package.xml) of components to deploy.",
1951
1843
  "hasDynamicHelp": false,
1952
1844
  "multiple": false,
1953
1845
  "type": "option"
1954
1846
  },
1955
- "target-org": {
1956
- "aliases": [
1957
- "targetusername",
1958
- "u"
1847
+ "metadata": {
1848
+ "char": "m",
1849
+ "exclusive": [
1850
+ "manifest",
1851
+ "source-dir",
1852
+ "metadata-dir"
1959
1853
  ],
1960
- "char": "o",
1961
- "deprecateAliases": true,
1962
- "name": "target-org",
1963
- "noCacheDefault": true,
1964
- "required": true,
1965
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1966
- "hasDynamicHelp": true,
1854
+ "helpGroup": "Source Format",
1855
+ "name": "metadata",
1856
+ "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
1857
+ "hasDynamicHelp": false,
1858
+ "multiple": true,
1859
+ "type": "option"
1860
+ },
1861
+ "metadata-dir": {
1862
+ "exclusive": [
1863
+ "manifest",
1864
+ "source-dir",
1865
+ "metadata"
1866
+ ],
1867
+ "helpGroup": "Metadata API Format",
1868
+ "name": "metadata-dir",
1869
+ "summary": "Root of directory or zip file of metadata formatted files to deploy.",
1870
+ "hasDynamicHelp": false,
1967
1871
  "multiple": false,
1968
1872
  "type": "option"
1969
1873
  },
1970
- "check-only": {
1971
- "aliases": [
1972
- "checkonly"
1874
+ "single-package": {
1875
+ "dependsOn": [
1876
+ "metadata-dir"
1973
1877
  ],
1974
- "char": "c",
1975
- "deprecateAliases": true,
1976
- "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 flag 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.",
1977
- "name": "check-only",
1978
- "summary": "Validate delete command but don't delete anything from the org or the local project.",
1878
+ "helpGroup": "Metadata API Format",
1879
+ "name": "single-package",
1880
+ "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
1979
1881
  "allowNo": false,
1980
1882
  "type": "boolean"
1981
1883
  },
1982
- "wait": {
1983
- "char": "w",
1984
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
1985
- "name": "wait",
1986
- "summary": "Number of minutes to wait for the command to finish.",
1884
+ "source-dir": {
1885
+ "char": "d",
1886
+ "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.",
1887
+ "exclusive": [
1888
+ "manifest",
1889
+ "metadata",
1890
+ "metadata-dir"
1891
+ ],
1892
+ "helpGroup": "Source Format",
1893
+ "name": "source-dir",
1894
+ "summary": "Path to the local source files to deploy.",
1895
+ "hasDynamicHelp": false,
1896
+ "multiple": true,
1897
+ "type": "option"
1898
+ },
1899
+ "target-org": {
1900
+ "char": "o",
1901
+ "name": "target-org",
1902
+ "noCacheDefault": true,
1903
+ "required": true,
1904
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1987
1905
  "hasDynamicHelp": true,
1988
1906
  "multiple": false,
1989
1907
  "type": "option"
1990
1908
  },
1991
1909
  "tests": {
1910
+ "char": "t",
1992
1911
  "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\"",
1993
1912
  "helpGroup": "Test",
1994
1913
  "name": "tests",
@@ -1998,11 +1917,7 @@
1998
1917
  "type": "option"
1999
1918
  },
2000
1919
  "test-level": {
2001
- "aliases": [
2002
- "testlevel"
2003
- ],
2004
1920
  "char": "l",
2005
- "deprecateAliases": true,
2006
1921
  "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- RunRelevantTests (Beta) — Runs only tests that are relevant to the files being deployed. Salesforce automatically identifies the relevant tests based on an analysis of the deployment payload and the payload dependencies. For fine-grained control, you can also annotate test classes so that they always run in certain conditions. See \"@IsTest Annotation\" in the \"Apex Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_isTest.htm). Each class and trigger in the deployment package must be covered by the executed tests for a minimum of 75% code coverage. This coverage is computed for each class and triggers individually and is different than the overall coverage percentage.\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\" (https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
2007
1922
  "helpGroup": "Test",
2008
1923
  "name": "test-level",
@@ -2018,120 +1933,217 @@
2018
1933
  ],
2019
1934
  "type": "option"
2020
1935
  },
2021
- "no-prompt": {
2022
- "aliases": [
2023
- "noprompt"
1936
+ "verbose": {
1937
+ "exclusive": [
1938
+ "concise"
2024
1939
  ],
2025
- "char": "r",
2026
- "deprecateAliases": true,
2027
- "name": "no-prompt",
2028
- "summary": "Don't prompt for delete confirmation.",
1940
+ "name": "verbose",
1941
+ "summary": "Show verbose output of the deploy result.",
2029
1942
  "allowNo": false,
2030
1943
  "type": "boolean"
2031
1944
  },
2032
- "metadata": {
2033
- "char": "m",
2034
- "description": "If you specify this flag, don’t specify --source-dir.",
2035
- "name": "metadata",
2036
- "summary": "Metadata components to delete.",
2037
- "delimiter": ",",
2038
- "hasDynamicHelp": false,
2039
- "multiple": true,
2040
- "type": "option"
2041
- },
2042
- "source-dir": {
2043
- "aliases": [
2044
- "sourcepath"
1945
+ "wait": {
1946
+ "char": "w",
1947
+ "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\".",
1948
+ "exclusive": [
1949
+ "async"
2045
1950
  ],
2046
- "char": "p",
2047
- "deprecateAliases": true,
2048
- "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 flag, don’t specify --metadata.",
2049
- "name": "source-dir",
2050
- "summary": "Source file paths to delete.",
2051
- "delimiter": ",",
2052
- "hasDynamicHelp": false,
2053
- "multiple": true,
1951
+ "name": "wait",
1952
+ "summary": "Number of minutes to wait for command to complete and display results.",
1953
+ "hasDynamicHelp": true,
1954
+ "helpValue": "<minutes>",
1955
+ "multiple": false,
2054
1956
  "type": "option"
2055
1957
  },
2056
- "track-source": {
2057
- "aliases": [
2058
- "tracksource"
2059
- ],
2060
- "char": "t",
2061
- "deprecateAliases": true,
2062
- "exclusive": [
2063
- "check-only"
1958
+ "purge-on-delete": {
1959
+ "helpGroup": "Delete",
1960
+ "name": "purge-on-delete",
1961
+ "relationships": [
1962
+ {
1963
+ "type": "some",
1964
+ "flags": [
1965
+ "pre-destructive-changes",
1966
+ "manifest",
1967
+ "metadata-dir",
1968
+ "post-destructive-changes"
1969
+ ]
1970
+ }
2064
1971
  ],
2065
- "name": "track-source",
2066
- "summary": "If the delete succeeds, update the source tracking information.",
1972
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
2067
1973
  "allowNo": false,
2068
1974
  "type": "boolean"
2069
1975
  },
2070
- "force-overwrite": {
2071
- "aliases": [
2072
- "forceoverwrite"
1976
+ "pre-destructive-changes": {
1977
+ "dependsOn": [
1978
+ "manifest"
2073
1979
  ],
2074
- "char": "f",
1980
+ "helpGroup": "Delete",
1981
+ "name": "pre-destructive-changes",
1982
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy.",
1983
+ "hasDynamicHelp": false,
1984
+ "multiple": false,
1985
+ "type": "option"
1986
+ },
1987
+ "post-destructive-changes": {
2075
1988
  "dependsOn": [
2076
- "track-source"
1989
+ "manifest"
2077
1990
  ],
2078
- "deprecateAliases": true,
2079
- "name": "force-overwrite",
2080
- "summary": "Ignore conflict warnings and overwrite changes to the org.",
2081
- "allowNo": false,
2082
- "type": "boolean"
1991
+ "helpGroup": "Delete",
1992
+ "name": "post-destructive-changes",
1993
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
1994
+ "hasDynamicHelp": false,
1995
+ "multiple": false,
1996
+ "type": "option"
2083
1997
  },
2084
- "verbose": {
2085
- "name": "verbose",
2086
- "summary": "Verbose output of the delete result.",
1998
+ "coverage-formatters": {
1999
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
2000
+ "helpGroup": "Test",
2001
+ "name": "coverage-formatters",
2002
+ "summary": "Format of the code coverage results.",
2003
+ "hasDynamicHelp": false,
2004
+ "multiple": true,
2005
+ "options": [
2006
+ "clover",
2007
+ "cobertura",
2008
+ "html-spa",
2009
+ "html",
2010
+ "json",
2011
+ "json-summary",
2012
+ "lcovonly",
2013
+ "none",
2014
+ "teamcity",
2015
+ "text",
2016
+ "text-summary"
2017
+ ],
2018
+ "type": "option"
2019
+ },
2020
+ "junit": {
2021
+ "helpGroup": "Test",
2022
+ "name": "junit",
2023
+ "summary": "Output JUnit test results.",
2087
2024
  "allowNo": false,
2088
2025
  "type": "boolean"
2026
+ },
2027
+ "results-dir": {
2028
+ "helpGroup": "Test",
2029
+ "name": "results-dir",
2030
+ "relationships": [
2031
+ {
2032
+ "type": "some",
2033
+ "flags": [
2034
+ "coverage-formatters",
2035
+ "junit"
2036
+ ]
2037
+ }
2038
+ ],
2039
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
2040
+ "hasDynamicHelp": false,
2041
+ "multiple": false,
2042
+ "type": "option"
2089
2043
  }
2090
2044
  },
2091
2045
  "hasDynamicHelp": true,
2092
2046
  "hiddenAliases": [],
2093
- "id": "project:delete:source",
2047
+ "id": "project:deploy:start",
2094
2048
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2095
2049
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2096
2050
  "pluginType": "core",
2097
2051
  "strict": true,
2098
- "summary": "Delete source from your project and from a non-source-tracked org.",
2052
+ "summary": "Deploy metadata to an org from your local project.",
2099
2053
  "enableJsonFlag": true,
2100
- "requiresProject": true,
2054
+ "configurationVariablesSection": {
2055
+ "header": "CONFIGURATION VARIABLES",
2056
+ "body": [
2057
+ {
2058
+ "name": "target-org",
2059
+ "description": "Username or alias of the org that all commands run against by default. (sf only)"
2060
+ },
2061
+ {
2062
+ "name": "org-api-version",
2063
+ "description": "API version of your project. Default: API version of your Dev Hub org."
2064
+ }
2065
+ ]
2066
+ },
2067
+ "envVariablesSection": {
2068
+ "header": "ENVIRONMENT VARIABLES",
2069
+ "body": [
2070
+ {
2071
+ "name": "SF_TARGET_ORG",
2072
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
2073
+ },
2074
+ {
2075
+ "name": "SF_USE_PROGRESS_BAR",
2076
+ "description": "Set to false to disable the progress bar when running the metadata deploy command."
2077
+ }
2078
+ ]
2079
+ },
2080
+ "errorCodes": {
2081
+ "header": "ERROR CODES",
2082
+ "body": [
2083
+ {
2084
+ "name": "Succeeded (0)",
2085
+ "description": "The deploy succeeded."
2086
+ },
2087
+ {
2088
+ "name": "Canceled (1)",
2089
+ "description": "The deploy was canceled."
2090
+ },
2091
+ {
2092
+ "name": "Failed (1)",
2093
+ "description": "The deploy failed."
2094
+ },
2095
+ {
2096
+ "name": "SucceededPartial (68)",
2097
+ "description": "The deploy partially succeeded."
2098
+ },
2099
+ {
2100
+ "name": "InProgress (69)",
2101
+ "description": "The deploy is in progress."
2102
+ },
2103
+ {
2104
+ "name": "Pending (69)",
2105
+ "description": "The deploy is pending."
2106
+ },
2107
+ {
2108
+ "name": "Canceling (69)",
2109
+ "description": "The deploy is being canceled."
2110
+ }
2111
+ ]
2112
+ },
2101
2113
  "isESM": true,
2102
2114
  "relativePath": [
2103
2115
  "lib",
2104
2116
  "commands",
2105
2117
  "project",
2106
- "delete",
2107
- "source.js"
2118
+ "deploy",
2119
+ "start.js"
2108
2120
  ],
2109
2121
  "aliasPermutations": [
2110
- "force:source:delete",
2111
- "source:force:delete",
2112
- "source:delete:force",
2113
- "force:delete:source",
2114
- "delete:force:source",
2115
- "delete:source:force"
2122
+ "deploy:metadata",
2123
+ "metadata:deploy"
2116
2124
  ],
2117
2125
  "permutations": [
2118
- "project:delete:source",
2119
- "delete:project:source",
2120
- "delete:source:project",
2121
- "project:source:delete",
2122
- "source:project:delete",
2123
- "source:delete:project"
2126
+ "project:deploy:start",
2127
+ "deploy:project:start",
2128
+ "deploy:start:project",
2129
+ "project:start:deploy",
2130
+ "start:project:deploy",
2131
+ "start:deploy:project"
2124
2132
  ]
2125
2133
  },
2126
- "project:delete:tracking": {
2134
+ "project:deploy:validate": {
2127
2135
  "aliases": [
2128
- "force:source:tracking:clear"
2136
+ "deploy:metadata:validate"
2129
2137
  ],
2130
2138
  "args": {},
2131
2139
  "deprecateAliases": true,
2132
- "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.",
2140
+ "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 --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.",
2133
2141
  "examples": [
2134
- "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
2142
+ "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.",
2143
+ "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",
2144
+ "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",
2145
+ "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",
2146
+ "Validate the deployment of all components listed in a manifest:\n<%= config.bin %> <%= command.id %> --manifest path/to/package.xml"
2135
2147
  ],
2136
2148
  "flags": {
2137
2149
  "json": {
@@ -2150,276 +2162,358 @@
2150
2162
  "type": "option"
2151
2163
  },
2152
2164
  "api-version": {
2153
- "aliases": [
2154
- "apiversion"
2155
- ],
2156
- "deprecateAliases": true,
2157
- "description": "Override the api version used for api requests made by this command",
2165
+ "char": "a",
2166
+ "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.",
2158
2167
  "name": "api-version",
2168
+ "summary": "Target API version for the validation.",
2159
2169
  "hasDynamicHelp": false,
2160
2170
  "multiple": false,
2161
2171
  "type": "option"
2162
2172
  },
2163
- "loglevel": {
2164
- "deprecated": {
2165
- "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."
2166
- },
2167
- "hidden": true,
2168
- "name": "loglevel",
2173
+ "async": {
2174
+ "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\".",
2175
+ "name": "async",
2176
+ "summary": "Run the command asynchronously.",
2177
+ "allowNo": false,
2178
+ "type": "boolean"
2179
+ },
2180
+ "concise": {
2181
+ "exclusive": [
2182
+ "verbose"
2183
+ ],
2184
+ "name": "concise",
2185
+ "summary": "Show concise output of the validation result.",
2186
+ "allowNo": false,
2187
+ "type": "boolean"
2188
+ },
2189
+ "manifest": {
2190
+ "char": "x",
2191
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
2192
+ "helpGroup": "Source Format",
2193
+ "name": "manifest",
2194
+ "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
2169
2195
  "hasDynamicHelp": false,
2170
2196
  "multiple": false,
2171
2197
  "type": "option"
2172
2198
  },
2173
- "target-org": {
2174
- "aliases": [
2175
- "targetusername",
2176
- "u"
2177
- ],
2178
- "char": "o",
2179
- "deprecateAliases": true,
2180
- "name": "target-org",
2181
- "noCacheDefault": true,
2182
- "required": true,
2183
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2184
- "hasDynamicHelp": true,
2185
- "multiple": false,
2199
+ "metadata": {
2200
+ "char": "m",
2201
+ "helpGroup": "Source Format",
2202
+ "name": "metadata",
2203
+ "summary": "Metadata component names to validate for deployment.",
2204
+ "hasDynamicHelp": false,
2205
+ "multiple": true,
2186
2206
  "type": "option"
2187
2207
  },
2188
- "no-prompt": {
2189
- "aliases": [
2190
- "noprompt"
2191
- ],
2192
- "char": "p",
2193
- "deprecateAliases": true,
2194
- "name": "no-prompt",
2195
- "summary": "Don't prompt for source tracking override confirmation.",
2196
- "allowNo": false,
2197
- "type": "boolean"
2198
- }
2199
- },
2200
- "hasDynamicHelp": true,
2201
- "hiddenAliases": [],
2202
- "id": "project:delete:tracking",
2203
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2204
- "pluginName": "@salesforce/plugin-deploy-retrieve",
2205
- "pluginType": "core",
2206
- "strict": true,
2207
- "summary": "Delete all local source tracking information.",
2208
- "enableJsonFlag": true,
2209
- "requiresProject": true,
2210
- "isESM": true,
2211
- "relativePath": [
2212
- "lib",
2213
- "commands",
2214
- "project",
2215
- "delete",
2216
- "tracking.js"
2217
- ],
2218
- "aliasPermutations": [
2219
- "force:source:tracking:clear",
2220
- "source:force:tracking:clear",
2221
- "source:tracking:force:clear",
2222
- "source:tracking:clear:force",
2223
- "force:tracking:source:clear",
2224
- "tracking:force:source:clear",
2225
- "tracking:source:force:clear",
2226
- "tracking:source:clear:force",
2227
- "force:tracking:clear:source",
2228
- "tracking:force:clear:source",
2229
- "tracking:clear:force:source",
2230
- "tracking:clear:source:force",
2231
- "force:source:clear:tracking",
2232
- "source:force:clear:tracking",
2233
- "source:clear:force:tracking",
2234
- "source:clear:tracking:force",
2235
- "force:clear:source:tracking",
2236
- "clear:force:source:tracking",
2237
- "clear:source:force:tracking",
2238
- "clear:source:tracking:force",
2239
- "force:clear:tracking:source",
2240
- "clear:force:tracking:source",
2241
- "clear:tracking:force:source",
2242
- "clear:tracking:source:force"
2243
- ],
2244
- "permutations": [
2245
- "project:delete:tracking",
2246
- "delete:project:tracking",
2247
- "delete:tracking:project",
2248
- "project:tracking:delete",
2249
- "tracking:project:delete",
2250
- "tracking:delete:project"
2251
- ]
2252
- },
2253
- "project:generate:manifest": {
2254
- "aliases": [
2255
- "force:source:manifest:create"
2256
- ],
2257
- "args": {},
2258
- "deprecateAliases": true,
2259
- "description": "Create a manifest from a list of metadata components (--metadata) or from one or more local directories that contain source files (--source-dir). You can specify either of these flags, not both.\n\nUse --type to specify the type of manifest you want to create. The resulting manifest files have specific names, such as the standard package.xml or destructiveChanges.xml to delete metadata. Valid values for this flag, and their respective file names, are:\n\n * package : package.xml (default)\n * pre : destructiveChangesPre.xml\n * post : destructiveChangesPost.xml\n * destroy : destructiveChanges.xml\n\nSee https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_deleting_files.htm for information about these destructive manifest files.\n\nUse --name to specify a custom name for the generated manifest if the pre-defined ones don’t suit your needs. You can specify either --type or --name, but not both.\n\nTo include 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 --include-packages and --source-dir.\n\nTo build a manifest from the metadata in an org, use the --from-org flag. You can combine --from-org with the --metadata flag to include only certain metadata types, or with the --excluded-metadata flag to exclude certain metadata types. When building a manifest from an org, the command makes many concurrent API calls to discover the metadata that exists in the org. To limit the number of concurrent requests, use the SF_LIST_METADATA_BATCH_SIZE environment variable and set it to a size that works best for your org and environment. If you experience timeouts or inconsistent manifest contents, then setting this environment variable can improve accuracy. However, the command takes longer to run because it sends fewer requests at a time.",
2260
- "examples": [
2261
- "Create a manifest for deploying or retrieving all Apex classes and custom objects:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass --metadata CustomObject",
2262
- "Create a manifest for deleting the specified Apex class:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --type destroy",
2263
- "Create a manifest for deploying or retrieving all the metadata components in the specified local directory; name the file myNewManifest.xml:\n$ <%= config.bin %> <%= command.id %> --source-dir force-app --name myNewManifest",
2264
- "Create a manifest from the metadata components in the specified org and include metadata in any unlocked packages:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --include-packages unlocked",
2265
- "Create a manifest from specific metadata types in an org:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --metadata ApexClass,CustomObject,CustomLabels",
2266
- "Create a manifest from all metadata components in an org excluding specific metadata types:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --excluded-metadata StandardValueSet"
2267
- ],
2268
- "flags": {
2269
- "json": {
2270
- "description": "Format output as json.",
2271
- "helpGroup": "GLOBAL",
2272
- "name": "json",
2273
- "allowNo": false,
2274
- "type": "boolean"
2275
- },
2276
- "flags-dir": {
2277
- "helpGroup": "GLOBAL",
2278
- "name": "flags-dir",
2279
- "summary": "Import flag values from a directory.",
2208
+ "source-dir": {
2209
+ "char": "d",
2210
+ "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.",
2211
+ "helpGroup": "Source Format",
2212
+ "name": "source-dir",
2213
+ "summary": "Path to the local source files to validate for deployment.",
2280
2214
  "hasDynamicHelp": false,
2281
- "multiple": false,
2215
+ "multiple": true,
2282
2216
  "type": "option"
2283
2217
  },
2284
- "api-version": {
2285
- "aliases": [
2286
- "apiversion"
2287
- ],
2288
- "deprecateAliases": true,
2289
- "description": "Override the api version used for api requests made by this command",
2290
- "name": "api-version",
2218
+ "metadata-dir": {
2219
+ "helpGroup": "Metadata API Format",
2220
+ "name": "metadata-dir",
2221
+ "summary": "Root of directory or zip file of metadata formatted files to deploy.",
2291
2222
  "hasDynamicHelp": false,
2292
2223
  "multiple": false,
2293
2224
  "type": "option"
2294
2225
  },
2295
- "loglevel": {
2296
- "deprecated": {
2297
- "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."
2298
- },
2299
- "hidden": true,
2300
- "name": "loglevel",
2301
- "hasDynamicHelp": false,
2226
+ "single-package": {
2227
+ "dependsOn": [
2228
+ "metadata-dir"
2229
+ ],
2230
+ "helpGroup": "Metadata API Format",
2231
+ "name": "single-package",
2232
+ "summary": "Indicates that the metadata zip file points to a directory structure for a single package.",
2233
+ "allowNo": false,
2234
+ "type": "boolean"
2235
+ },
2236
+ "target-org": {
2237
+ "char": "o",
2238
+ "name": "target-org",
2239
+ "noCacheDefault": true,
2240
+ "required": true,
2241
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2242
+ "hasDynamicHelp": true,
2302
2243
  "multiple": false,
2303
2244
  "type": "option"
2304
2245
  },
2305
- "metadata": {
2306
- "char": "m",
2307
- "name": "metadata",
2308
- "summary": "Names of metadata components to include in the manifest.",
2309
- "delimiter": ",",
2246
+ "tests": {
2247
+ "char": "t",
2248
+ "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\"",
2249
+ "helpGroup": "Test",
2250
+ "name": "tests",
2251
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
2310
2252
  "hasDynamicHelp": false,
2311
2253
  "multiple": true,
2312
2254
  "type": "option"
2313
2255
  },
2314
- "source-dir": {
2315
- "aliases": [
2316
- "sourcepath"
2317
- ],
2318
- "char": "p",
2319
- "deprecateAliases": true,
2320
- "name": "source-dir",
2321
- "summary": "Paths to the local source files to include in the manifest.",
2322
- "delimiter": ",",
2256
+ "test-level": {
2257
+ "char": "l",
2258
+ "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.\n\n- RunRelevantTests (Beta) — Runs only tests that are relevant to the files being deployed. Salesforce automatically identifies the relevant tests based on an analysis of the deployment payload and the payload dependencies. For fine-grained control, you can also annotate test classes so that they always run in certain conditions. See \"@IsTest Annotation\" in the \"Apex Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_isTest.htm). Each class and trigger in the deployment package must be covered by the executed tests for a minimum of 75% code coverage. This coverage is computed for each class and triggers individually and is different than the overall coverage percentage.\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\" (https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_running_tests.htm) in the \"Metadata API Developer Guide\".",
2259
+ "helpGroup": "Test",
2260
+ "name": "test-level",
2261
+ "summary": "Deployment Apex testing level.",
2262
+ "default": "RunLocalTests",
2323
2263
  "hasDynamicHelp": false,
2324
- "multiple": true,
2264
+ "multiple": false,
2265
+ "options": [
2266
+ "RunAllTestsInOrg",
2267
+ "RunLocalTests",
2268
+ "RunSpecifiedTests",
2269
+ "RunRelevantTests"
2270
+ ],
2325
2271
  "type": "option"
2326
2272
  },
2327
- "name": {
2328
- "aliases": [
2329
- "manifestname"
2330
- ],
2331
- "char": "n",
2332
- "deprecateAliases": true,
2273
+ "verbose": {
2333
2274
  "exclusive": [
2334
- "type"
2275
+ "concise"
2335
2276
  ],
2336
- "name": "name",
2337
- "summary": "Name of a custom manifest file to create.",
2338
- "hasDynamicHelp": false,
2277
+ "name": "verbose",
2278
+ "summary": "Show verbose output of the validation result.",
2279
+ "allowNo": false,
2280
+ "type": "boolean"
2281
+ },
2282
+ "wait": {
2283
+ "char": "w",
2284
+ "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\".",
2285
+ "name": "wait",
2286
+ "summary": "Number of minutes to wait for the command to complete and display results.",
2287
+ "hasDynamicHelp": true,
2288
+ "helpValue": "<minutes>",
2339
2289
  "multiple": false,
2340
2290
  "type": "option"
2341
2291
  },
2342
- "type": {
2343
- "aliases": [
2344
- "manifesttype"
2345
- ],
2346
- "char": "t",
2347
- "deprecateAliases": true,
2348
- "exclusive": [
2349
- "name"
2350
- ],
2351
- "name": "type",
2352
- "summary": "Type of manifest to create; the type determines the name of the created file.",
2292
+ "ignore-warnings": {
2293
+ "char": "g",
2294
+ "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.",
2295
+ "name": "ignore-warnings",
2296
+ "summary": "Ignore warnings and allow a deployment to complete successfully.",
2297
+ "allowNo": false,
2298
+ "type": "boolean"
2299
+ },
2300
+ "coverage-formatters": {
2301
+ "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
2302
+ "helpGroup": "Test",
2303
+ "name": "coverage-formatters",
2304
+ "summary": "Format of the code coverage results.",
2353
2305
  "hasDynamicHelp": false,
2354
- "multiple": false,
2306
+ "multiple": true,
2355
2307
  "options": [
2356
- "pre",
2357
- "post",
2358
- "destroy",
2359
- "package"
2308
+ "clover",
2309
+ "cobertura",
2310
+ "html-spa",
2311
+ "html",
2312
+ "json",
2313
+ "json-summary",
2314
+ "lcovonly",
2315
+ "none",
2316
+ "teamcity",
2317
+ "text",
2318
+ "text-summary"
2360
2319
  ],
2361
2320
  "type": "option"
2362
2321
  },
2363
- "include-packages": {
2364
- "aliases": [
2365
- "includepackages"
2366
- ],
2367
- "char": "c",
2368
- "dependsOn": [
2369
- "from-org"
2322
+ "junit": {
2323
+ "helpGroup": "Test",
2324
+ "name": "junit",
2325
+ "summary": "Output JUnit test results.",
2326
+ "allowNo": false,
2327
+ "type": "boolean"
2328
+ },
2329
+ "results-dir": {
2330
+ "helpGroup": "Test",
2331
+ "name": "results-dir",
2332
+ "relationships": [
2333
+ {
2334
+ "type": "some",
2335
+ "flags": [
2336
+ "coverage-formatters",
2337
+ "junit"
2338
+ ]
2339
+ }
2370
2340
  ],
2371
- "deprecateAliases": true,
2372
- "name": "include-packages",
2373
- "summary": "Package types (managed, unlocked) whose metadata is included in the manifest; by default, metadata in managed and unlocked packages is excluded. Metadata in unmanaged packages is always included.",
2374
- "delimiter": ",",
2341
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
2375
2342
  "hasDynamicHelp": false,
2376
- "multiple": true,
2377
- "options": [
2378
- "managed",
2379
- "unlocked"
2380
- ],
2343
+ "multiple": false,
2381
2344
  "type": "option"
2382
2345
  },
2383
- "excluded-metadata": {
2384
- "name": "excluded-metadata",
2346
+ "purge-on-delete": {
2347
+ "dependsOn": [
2348
+ "manifest"
2349
+ ],
2350
+ "helpGroup": "Delete",
2351
+ "name": "purge-on-delete",
2385
2352
  "relationships": [
2386
2353
  {
2387
2354
  "type": "some",
2388
2355
  "flags": [
2389
- "from-org",
2390
- "source-dir"
2356
+ "pre-destructive-changes",
2357
+ "post-destructive-changes"
2391
2358
  ]
2392
2359
  }
2393
2360
  ],
2394
- "summary": "Metadata types to exclude when building a manifest from an org. Specify the name of the type, not the name of a specific component.",
2395
- "delimiter": ",",
2361
+ "summary": "Specify that deleted components in the destructive changes manifest file are immediately eligible for deletion rather than being stored in the Recycle Bin.",
2362
+ "allowNo": false,
2363
+ "type": "boolean"
2364
+ },
2365
+ "pre-destructive-changes": {
2366
+ "dependsOn": [
2367
+ "manifest"
2368
+ ],
2369
+ "helpGroup": "Delete",
2370
+ "name": "pre-destructive-changes",
2371
+ "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
2396
2372
  "hasDynamicHelp": false,
2397
- "multiple": true,
2373
+ "multiple": false,
2374
+ "type": "option"
2375
+ },
2376
+ "post-destructive-changes": {
2377
+ "dependsOn": [
2378
+ "manifest"
2379
+ ],
2380
+ "helpGroup": "Delete",
2381
+ "name": "post-destructive-changes",
2382
+ "summary": "File path for a manifest (destructiveChangesPost.xml) of components to delete after the deploy.",
2383
+ "hasDynamicHelp": false,
2384
+ "multiple": false,
2398
2385
  "type": "option"
2386
+ }
2387
+ },
2388
+ "hasDynamicHelp": true,
2389
+ "hiddenAliases": [],
2390
+ "id": "project:deploy:validate",
2391
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2392
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
2393
+ "pluginType": "core",
2394
+ "strict": true,
2395
+ "summary": "Validate a metadata deployment without actually executing it.",
2396
+ "enableJsonFlag": true,
2397
+ "configurationVariablesSection": {
2398
+ "header": "CONFIGURATION VARIABLES",
2399
+ "body": [
2400
+ {
2401
+ "name": "target-org",
2402
+ "description": "Username or alias of the org that all commands run against by default. (sf only)"
2403
+ },
2404
+ {
2405
+ "name": "org-api-version",
2406
+ "description": "API version of your project. Default: API version of your Dev Hub org."
2407
+ }
2408
+ ]
2409
+ },
2410
+ "envVariablesSection": {
2411
+ "header": "ENVIRONMENT VARIABLES",
2412
+ "body": [
2413
+ {
2414
+ "name": "SF_TARGET_ORG",
2415
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
2416
+ },
2417
+ {
2418
+ "name": "SF_USE_PROGRESS_BAR",
2419
+ "description": "Set to false to disable the progress bar when running the metadata deploy command."
2420
+ }
2421
+ ]
2422
+ },
2423
+ "errorCodes": {
2424
+ "header": "ERROR CODES",
2425
+ "body": [
2426
+ {
2427
+ "name": "Succeeded (0)",
2428
+ "description": "The deploy succeeded."
2429
+ },
2430
+ {
2431
+ "name": "Canceled (1)",
2432
+ "description": "The deploy was canceled."
2433
+ },
2434
+ {
2435
+ "name": "Failed (1)",
2436
+ "description": "The deploy failed."
2437
+ },
2438
+ {
2439
+ "name": "SucceededPartial (68)",
2440
+ "description": "The deploy partially succeeded."
2441
+ },
2442
+ {
2443
+ "name": "InProgress (69)",
2444
+ "description": "The deploy is in progress."
2445
+ },
2446
+ {
2447
+ "name": "Pending (69)",
2448
+ "description": "The deploy is pending."
2449
+ },
2450
+ {
2451
+ "name": "Canceling (69)",
2452
+ "description": "The deploy is being canceled."
2453
+ }
2454
+ ]
2455
+ },
2456
+ "isESM": true,
2457
+ "relativePath": [
2458
+ "lib",
2459
+ "commands",
2460
+ "project",
2461
+ "deploy",
2462
+ "validate.js"
2463
+ ],
2464
+ "aliasPermutations": [
2465
+ "deploy:metadata:validate",
2466
+ "metadata:deploy:validate",
2467
+ "metadata:validate:deploy",
2468
+ "deploy:validate:metadata",
2469
+ "validate:deploy:metadata",
2470
+ "validate:metadata:deploy"
2471
+ ],
2472
+ "permutations": [
2473
+ "project:deploy:validate",
2474
+ "deploy:project:validate",
2475
+ "deploy:validate:project",
2476
+ "project:validate:deploy",
2477
+ "validate:project:deploy",
2478
+ "validate:deploy:project"
2479
+ ]
2480
+ },
2481
+ "project:list:ignored": {
2482
+ "aliases": [
2483
+ "force:source:ignored:list"
2484
+ ],
2485
+ "args": {},
2486
+ "deprecateAliases": true,
2487
+ "description": "When deploying or retrieving metadata between your local project and an org, you can specify the source files you want to exclude with a .forceignore file. The .forceignore file structure mimics the .gitignore structure. Each line in .forceignore specifies a pattern that corresponds to one or more files. The files typically represent metadata components, but can be any files you want to exclude, such as LWC configuration JSON files or tests.",
2488
+ "examples": [
2489
+ "List all the files in all package directories that are ignored:\n<%= config.bin %> <%= command.id %>",
2490
+ "List all the files in a specific directory that are ignored:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
2491
+ "Check if a particular file is ignored:\n<%= config.bin %> <%= command.id %> --source-dir package.xml"
2492
+ ],
2493
+ "flags": {
2494
+ "json": {
2495
+ "description": "Format output as json.",
2496
+ "helpGroup": "GLOBAL",
2497
+ "name": "json",
2498
+ "allowNo": false,
2499
+ "type": "boolean"
2399
2500
  },
2400
- "from-org": {
2401
- "aliases": [
2402
- "fromorg"
2403
- ],
2404
- "deprecateAliases": true,
2405
- "exclusive": [
2406
- "source-dir"
2407
- ],
2408
- "name": "from-org",
2409
- "summary": "Username or alias of the org that contains the metadata components from which to build a manifest.",
2501
+ "flags-dir": {
2502
+ "helpGroup": "GLOBAL",
2503
+ "name": "flags-dir",
2504
+ "summary": "Import flag values from a directory.",
2410
2505
  "hasDynamicHelp": false,
2411
2506
  "multiple": false,
2412
2507
  "type": "option"
2413
2508
  },
2414
- "output-dir": {
2509
+ "source-dir": {
2415
2510
  "aliases": [
2416
- "outputdir",
2417
- "o"
2511
+ "sourcepath"
2418
2512
  ],
2419
- "char": "d",
2513
+ "char": "p",
2420
2514
  "deprecateAliases": true,
2421
- "name": "output-dir",
2422
- "summary": "Directory to save the created manifest.",
2515
+ "name": "source-dir",
2516
+ "summary": "File or directory of files that the command checks for foreceignored files.",
2423
2517
  "hasDynamicHelp": false,
2424
2518
  "multiple": false,
2425
2519
  "type": "option"
@@ -2427,12 +2521,12 @@
2427
2521
  },
2428
2522
  "hasDynamicHelp": false,
2429
2523
  "hiddenAliases": [],
2430
- "id": "project:generate:manifest",
2524
+ "id": "project:list:ignored",
2431
2525
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2432
2526
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2433
2527
  "pluginType": "core",
2434
2528
  "strict": true,
2435
- "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
2529
+ "summary": "Check your local project package directories for forceignored files.",
2436
2530
  "enableJsonFlag": true,
2437
2531
  "requiresProject": true,
2438
2532
  "isESM": true,
@@ -2440,42 +2534,42 @@
2440
2534
  "lib",
2441
2535
  "commands",
2442
2536
  "project",
2443
- "generate",
2444
- "manifest.js"
2537
+ "list",
2538
+ "ignored.js"
2445
2539
  ],
2446
2540
  "aliasPermutations": [
2447
- "force:source:manifest:create",
2448
- "source:force:manifest:create",
2449
- "source:manifest:force:create",
2450
- "source:manifest:create:force",
2451
- "force:manifest:source:create",
2452
- "manifest:force:source:create",
2453
- "manifest:source:force:create",
2454
- "manifest:source:create:force",
2455
- "force:manifest:create:source",
2456
- "manifest:force:create:source",
2457
- "manifest:create:force:source",
2458
- "manifest:create:source:force",
2459
- "force:source:create:manifest",
2460
- "source:force:create:manifest",
2461
- "source:create:force:manifest",
2462
- "source:create:manifest:force",
2463
- "force:create:source:manifest",
2464
- "create:force:source:manifest",
2465
- "create:source:force:manifest",
2466
- "create:source:manifest:force",
2467
- "force:create:manifest:source",
2468
- "create:force:manifest:source",
2469
- "create:manifest:force:source",
2470
- "create:manifest:source:force"
2541
+ "force:source:ignored:list",
2542
+ "source:force:ignored:list",
2543
+ "source:ignored:force:list",
2544
+ "source:ignored:list:force",
2545
+ "force:ignored:source:list",
2546
+ "ignored:force:source:list",
2547
+ "ignored:source:force:list",
2548
+ "ignored:source:list:force",
2549
+ "force:ignored:list:source",
2550
+ "ignored:force:list:source",
2551
+ "ignored:list:force:source",
2552
+ "ignored:list:source:force",
2553
+ "force:source:list:ignored",
2554
+ "source:force:list:ignored",
2555
+ "source:list:force:ignored",
2556
+ "source:list:ignored:force",
2557
+ "force:list:source:ignored",
2558
+ "list:force:source:ignored",
2559
+ "list:source:force:ignored",
2560
+ "list:source:ignored:force",
2561
+ "force:list:ignored:source",
2562
+ "list:force:ignored:source",
2563
+ "list:ignored:force:source",
2564
+ "list:ignored:source:force"
2471
2565
  ],
2472
2566
  "permutations": [
2473
- "project:generate:manifest",
2474
- "generate:project:manifest",
2475
- "generate:manifest:project",
2476
- "project:manifest:generate",
2477
- "manifest:project:generate",
2478
- "manifest:generate:project"
2567
+ "project:list:ignored",
2568
+ "list:project:ignored",
2569
+ "list:ignored:project",
2570
+ "project:ignored:list",
2571
+ "ignored:project:list",
2572
+ "ignored:list:project"
2479
2573
  ]
2480
2574
  },
2481
2575
  "project:reset:tracking": {
@@ -2958,101 +3052,7 @@
2958
3052
  "start:project:retrieve",
2959
3053
  "start:retrieve:project"
2960
3054
  ]
2961
- },
2962
- "project:list:ignored": {
2963
- "aliases": [
2964
- "force:source:ignored:list"
2965
- ],
2966
- "args": {},
2967
- "deprecateAliases": true,
2968
- "description": "When deploying or retrieving metadata between your local project and an org, you can specify the source files you want to exclude with a .forceignore file. The .forceignore file structure mimics the .gitignore structure. Each line in .forceignore specifies a pattern that corresponds to one or more files. The files typically represent metadata components, but can be any files you want to exclude, such as LWC configuration JSON files or tests.",
2969
- "examples": [
2970
- "List all the files in all package directories that are ignored:\n<%= config.bin %> <%= command.id %>",
2971
- "List all the files in a specific directory that are ignored:\n<%= config.bin %> <%= command.id %> --source-dir force-app",
2972
- "Check if a particular file is ignored:\n<%= config.bin %> <%= command.id %> --source-dir package.xml"
2973
- ],
2974
- "flags": {
2975
- "json": {
2976
- "description": "Format output as json.",
2977
- "helpGroup": "GLOBAL",
2978
- "name": "json",
2979
- "allowNo": false,
2980
- "type": "boolean"
2981
- },
2982
- "flags-dir": {
2983
- "helpGroup": "GLOBAL",
2984
- "name": "flags-dir",
2985
- "summary": "Import flag values from a directory.",
2986
- "hasDynamicHelp": false,
2987
- "multiple": false,
2988
- "type": "option"
2989
- },
2990
- "source-dir": {
2991
- "aliases": [
2992
- "sourcepath"
2993
- ],
2994
- "char": "p",
2995
- "deprecateAliases": true,
2996
- "name": "source-dir",
2997
- "summary": "File or directory of files that the command checks for foreceignored files.",
2998
- "hasDynamicHelp": false,
2999
- "multiple": false,
3000
- "type": "option"
3001
- }
3002
- },
3003
- "hasDynamicHelp": false,
3004
- "hiddenAliases": [],
3005
- "id": "project:list:ignored",
3006
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
3007
- "pluginName": "@salesforce/plugin-deploy-retrieve",
3008
- "pluginType": "core",
3009
- "strict": true,
3010
- "summary": "Check your local project package directories for forceignored files.",
3011
- "enableJsonFlag": true,
3012
- "requiresProject": true,
3013
- "isESM": true,
3014
- "relativePath": [
3015
- "lib",
3016
- "commands",
3017
- "project",
3018
- "list",
3019
- "ignored.js"
3020
- ],
3021
- "aliasPermutations": [
3022
- "force:source:ignored:list",
3023
- "source:force:ignored:list",
3024
- "source:ignored:force:list",
3025
- "source:ignored:list:force",
3026
- "force:ignored:source:list",
3027
- "ignored:force:source:list",
3028
- "ignored:source:force:list",
3029
- "ignored:source:list:force",
3030
- "force:ignored:list:source",
3031
- "ignored:force:list:source",
3032
- "ignored:list:force:source",
3033
- "ignored:list:source:force",
3034
- "force:source:list:ignored",
3035
- "source:force:list:ignored",
3036
- "source:list:force:ignored",
3037
- "source:list:ignored:force",
3038
- "force:list:source:ignored",
3039
- "list:force:source:ignored",
3040
- "list:source:force:ignored",
3041
- "list:source:ignored:force",
3042
- "force:list:ignored:source",
3043
- "list:force:ignored:source",
3044
- "list:ignored:force:source",
3045
- "list:ignored:source:force"
3046
- ],
3047
- "permutations": [
3048
- "project:list:ignored",
3049
- "list:project:ignored",
3050
- "list:ignored:project",
3051
- "project:ignored:list",
3052
- "ignored:project:list",
3053
- "ignored:list:project"
3054
- ]
3055
3055
  }
3056
3056
  },
3057
- "version": "3.24.56"
3057
+ "version": "3.24.58"
3058
3058
  }