@salesforce/plugin-deploy-retrieve 3.24.58 → 3.24.59-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +17 -17
  2. package/oclif.manifest.json +1323 -1323
  3. package/package.json +6 -6
@@ -405,18 +405,16 @@
405
405
  "source:convert:project"
406
406
  ]
407
407
  },
408
- "project:delete:source": {
408
+ "project:deploy:cancel": {
409
409
  "aliases": [
410
- "force:source:delete"
410
+ "deploy:metadata:cancel"
411
411
  ],
412
412
  "args": {},
413
413
  "deprecateAliases": true,
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.",
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.",
415
415
  "examples": [
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"
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"
420
418
  ],
421
419
  "flags": {
422
420
  "json": {
@@ -434,207 +432,103 @@
434
432
  "multiple": false,
435
433
  "type": "option"
436
434
  },
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
- },
458
435
  "target-org": {
459
- "aliases": [
460
- "targetusername",
461
- "u"
462
- ],
463
436
  "char": "o",
464
- "deprecateAliases": true,
465
437
  "name": "target-org",
466
438
  "noCacheDefault": true,
467
- "required": true,
468
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
439
+ "summary": "Username or alias of the target org.",
469
440
  "hasDynamicHelp": true,
470
441
  "multiple": false,
471
442
  "type": "option"
472
443
  },
473
- "check-only": {
474
- "aliases": [
475
- "checkonly"
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"
476
448
  ],
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.",
449
+ "name": "async",
450
+ "summary": "Run the command asynchronously.",
482
451
  "allowNo": false,
483
452
  "type": "boolean"
484
453
  },
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.",
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.",
513
459
  "hasDynamicHelp": false,
514
460
  "multiple": false,
515
- "options": [
516
- "NoTestRun",
517
- "RunSpecifiedTests",
518
- "RunLocalTests",
519
- "RunAllTestsInOrg",
520
- "RunRelevantTests"
521
- ],
522
461
  "type": "option"
523
462
  },
524
- "no-prompt": {
525
- "aliases": [
526
- "noprompt"
527
- ],
463
+ "use-most-recent": {
528
464
  "char": "r",
529
- "deprecateAliases": true,
530
- "name": "no-prompt",
531
- "summary": "Don't prompt for delete confirmation.",
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.",
532
468
  "allowNo": false,
533
469
  "type": "boolean"
534
470
  },
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"
548
- ],
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,
557
- "type": "option"
558
- },
559
- "track-source": {
560
- "aliases": [
561
- "tracksource"
562
- ],
563
- "char": "t",
564
- "deprecateAliases": true,
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\".",
565
474
  "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"
475
+ "async"
580
476
  ],
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"
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,
482
+ "type": "option"
592
483
  }
593
484
  },
594
485
  "hasDynamicHelp": true,
595
486
  "hiddenAliases": [],
596
- "id": "project:delete:source",
487
+ "id": "project:deploy:cancel",
597
488
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
598
489
  "pluginName": "@salesforce/plugin-deploy-retrieve",
599
490
  "pluginType": "core",
600
491
  "strict": true,
601
- "summary": "Delete source from your project and from a non-source-tracked org.",
492
+ "summary": "Cancel a deploy operation.",
602
493
  "enableJsonFlag": true,
603
- "requiresProject": true,
604
494
  "isESM": true,
605
495
  "relativePath": [
606
496
  "lib",
607
497
  "commands",
608
498
  "project",
609
- "delete",
610
- "source.js"
499
+ "deploy",
500
+ "cancel.js"
611
501
  ],
612
502
  "aliasPermutations": [
613
- "force:source:delete",
614
- "source:force:delete",
615
- "source:delete:force",
616
- "force:delete:source",
617
- "delete:force:source",
618
- "delete:source:force"
503
+ "deploy:metadata:cancel",
504
+ "metadata:deploy:cancel",
505
+ "metadata:cancel:deploy",
506
+ "deploy:cancel:metadata",
507
+ "cancel:deploy:metadata",
508
+ "cancel:metadata:deploy"
619
509
  ],
620
510
  "permutations": [
621
- "project:delete:source",
622
- "delete:project:source",
623
- "delete:source:project",
624
- "project:source:delete",
625
- "source:project:delete",
626
- "source:delete:project"
511
+ "project:deploy:cancel",
512
+ "deploy:project:cancel",
513
+ "deploy:cancel:project",
514
+ "project:cancel:deploy",
515
+ "cancel:project:deploy",
516
+ "cancel:deploy:project"
627
517
  ]
628
518
  },
629
- "project:delete:tracking": {
519
+ "project:deploy:preview": {
630
520
  "aliases": [
631
- "force:source:tracking:clear"
521
+ "deploy:metadata:preview"
632
522
  ],
633
523
  "args": {},
634
524
  "deprecateAliases": true,
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.",
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.",
636
526
  "examples": [
637
- "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
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"
638
532
  ],
639
533
  "flags": {
640
534
  "json": {
@@ -652,34 +546,54 @@
652
546
  "multiple": false,
653
547
  "type": "option"
654
548
  },
655
- "api-version": {
656
- "aliases": [
657
- "apiversion"
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"
658
563
  ],
659
- "deprecateAliases": true,
660
- "description": "Override the api version used for api requests made by this command",
661
- "name": "api-version",
564
+ "name": "manifest",
565
+ "summary": "Full file path for manifest (package.xml) of components to preview.",
662
566
  "hasDynamicHelp": false,
663
567
  "multiple": false,
664
568
  "type": "option"
665
569
  },
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",
570
+ "metadata": {
571
+ "char": "m",
572
+ "exclusive": [
573
+ "manifest",
574
+ "source-dir"
575
+ ],
576
+ "name": "metadata",
577
+ "summary": "Metadata component names to preview.",
672
578
  "hasDynamicHelp": false,
673
- "multiple": false,
579
+ "multiple": true,
674
580
  "type": "option"
675
581
  },
676
- "target-org": {
677
- "aliases": [
678
- "targetusername",
679
- "u"
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"
680
588
  ],
589
+ "name": "source-dir",
590
+ "summary": "Path to the local source files to preview.",
591
+ "hasDynamicHelp": false,
592
+ "multiple": true,
593
+ "type": "option"
594
+ },
595
+ "target-org": {
681
596
  "char": "o",
682
- "deprecateAliases": true,
683
597
  "name": "target-org",
684
598
  "noCacheDefault": true,
685
599
  "required": true,
@@ -688,26 +602,21 @@
688
602
  "multiple": false,
689
603
  "type": "option"
690
604
  },
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.",
605
+ "concise": {
606
+ "name": "concise",
607
+ "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
699
608
  "allowNo": false,
700
609
  "type": "boolean"
701
610
  }
702
611
  },
703
612
  "hasDynamicHelp": true,
704
613
  "hiddenAliases": [],
705
- "id": "project:delete:tracking",
614
+ "id": "project:deploy:preview",
706
615
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
707
616
  "pluginName": "@salesforce/plugin-deploy-retrieve",
708
617
  "pluginType": "core",
709
618
  "strict": true,
710
- "summary": "Delete all local source tracking information.",
619
+ "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
711
620
  "enableJsonFlag": true,
712
621
  "requiresProject": true,
713
622
  "isESM": true,
@@ -715,58 +624,36 @@
715
624
  "lib",
716
625
  "commands",
717
626
  "project",
718
- "delete",
719
- "tracking.js"
627
+ "deploy",
628
+ "preview.js"
720
629
  ],
721
630
  "aliasPermutations": [
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"
631
+ "deploy:metadata:preview",
632
+ "metadata:deploy:preview",
633
+ "metadata:preview:deploy",
634
+ "deploy:preview:metadata",
635
+ "preview:deploy:metadata",
636
+ "preview:metadata:deploy"
746
637
  ],
747
638
  "permutations": [
748
- "project:delete:tracking",
749
- "delete:project:tracking",
750
- "delete:tracking:project",
751
- "project:tracking:delete",
752
- "tracking:project:delete",
753
- "tracking:delete:project"
639
+ "project:deploy:preview",
640
+ "deploy:project:preview",
641
+ "deploy:preview:project",
642
+ "project:preview:deploy",
643
+ "preview:project:deploy",
644
+ "preview:deploy:project"
754
645
  ]
755
646
  },
756
- "project:generate:manifest": {
647
+ "project:deploy:quick": {
757
648
  "aliases": [
758
- "force:source:manifest:create"
649
+ "deploy:metadata:quick"
759
650
  ],
760
651
  "args": {},
761
652
  "deprecateAliases": true,
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.",
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.",
763
654
  "examples": [
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"
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"
770
657
  ],
771
658
  "flags": {
772
659
  "json": {
@@ -784,213 +671,162 @@
784
671
  "multiple": false,
785
672
  "type": "option"
786
673
  },
787
- "api-version": {
788
- "aliases": [
789
- "apiversion"
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"
790
678
  ],
791
- "deprecateAliases": true,
792
- "description": "Override the api version used for api requests made by this command",
793
- "name": "api-version",
794
- "hasDynamicHelp": false,
795
- "multiple": false,
796
- "type": "option"
679
+ "name": "async",
680
+ "summary": "Run the command asynchronously.",
681
+ "allowNo": false,
682
+ "type": "boolean"
797
683
  },
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",
684
+ "concise": {
685
+ "exclusive": [
686
+ "verbose"
687
+ ],
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.",
804
698
  "hasDynamicHelp": false,
805
699
  "multiple": false,
806
700
  "type": "option"
807
701
  },
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,
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,
708
+ "multiple": false,
815
709
  "type": "option"
816
710
  },
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"
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"
829
718
  },
830
- "name": {
831
- "aliases": [
832
- "manifestname"
833
- ],
834
- "char": "n",
835
- "deprecateAliases": true,
719
+ "verbose": {
836
720
  "exclusive": [
837
- "type"
721
+ "concise"
838
722
  ],
839
- "name": "name",
840
- "summary": "Name of a custom manifest file to create.",
841
- "hasDynamicHelp": false,
842
- "multiple": false,
843
- "type": "option"
723
+ "name": "verbose",
724
+ "summary": "Show verbose output of the deploy result.",
725
+ "allowNo": false,
726
+ "type": "boolean"
844
727
  },
845
- "type": {
846
- "aliases": [
847
- "manifesttype"
848
- ],
849
- "char": "t",
850
- "deprecateAliases": true,
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\".",
851
731
  "exclusive": [
852
- "name"
732
+ "async"
853
733
  ],
854
- "name": "type",
855
- "summary": "Type of manifest to create; the type determines the name of the created file.",
856
- "hasDynamicHelp": false,
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>",
857
739
  "multiple": false,
858
- "options": [
859
- "pre",
860
- "post",
861
- "destroy",
862
- "package"
863
- ],
864
- "type": "option"
865
- },
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
740
  "type": "option"
885
741
  },
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.",
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.",
926
747
  "hasDynamicHelp": false,
927
748
  "multiple": false,
928
749
  "type": "option"
929
750
  }
930
751
  },
931
- "hasDynamicHelp": false,
752
+ "hasDynamicHelp": true,
932
753
  "hiddenAliases": [],
933
- "id": "project:generate:manifest",
754
+ "id": "project:deploy:quick",
934
755
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
935
756
  "pluginName": "@salesforce/plugin-deploy-retrieve",
936
757
  "pluginType": "core",
937
758
  "strict": true,
938
- "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
759
+ "summary": "Quickly deploy a validated deployment to an org.",
939
760
  "enableJsonFlag": true,
940
- "requiresProject": 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
+ },
941
794
  "isESM": true,
942
795
  "relativePath": [
943
796
  "lib",
944
797
  "commands",
945
798
  "project",
946
- "generate",
947
- "manifest.js"
799
+ "deploy",
800
+ "quick.js"
948
801
  ],
949
802
  "aliasPermutations": [
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"
803
+ "deploy:metadata:quick",
804
+ "metadata:deploy:quick",
805
+ "metadata:quick:deploy",
806
+ "deploy:quick:metadata",
807
+ "quick:deploy:metadata",
808
+ "quick:metadata:deploy"
974
809
  ],
975
810
  "permutations": [
976
- "project:generate:manifest",
977
- "generate:project:manifest",
978
- "generate:manifest:project",
979
- "project:manifest:generate",
980
- "manifest:project:generate",
981
- "manifest:generate:project"
811
+ "project:deploy:quick",
812
+ "deploy:project:quick",
813
+ "deploy:quick:project",
814
+ "project:quick:deploy",
815
+ "quick:project:deploy",
816
+ "quick:deploy:project"
982
817
  ]
983
818
  },
984
- "project:deploy:cancel": {
819
+ "project:deploy:report": {
985
820
  "aliases": [
986
- "deploy:metadata:cancel"
821
+ "deploy:metadata:report"
987
822
  ],
988
823
  "args": {},
989
824
  "deprecateAliases": true,
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.",
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.",
991
826
  "examples": [
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"
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"
994
830
  ],
995
831
  "flags": {
996
832
  "json": {
@@ -1017,41 +853,74 @@
1017
853
  "multiple": false,
1018
854
  "type": "option"
1019
855
  },
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
- },
1030
856
  "job-id": {
1031
857
  "char": "i",
1032
858
  "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.",
1033
859
  "name": "job-id",
1034
- "summary": "Job ID of the deploy operation you want to cancel.",
860
+ "summary": "Job ID of the deploy operation you want to check the status of.",
1035
861
  "hasDynamicHelp": false,
1036
862
  "multiple": false,
1037
863
  "type": "option"
1038
864
  },
1039
865
  "use-most-recent": {
1040
866
  "char": "r",
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.",
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.",
1042
868
  "name": "use-most-recent",
1043
869
  "summary": "Use the job ID of the most recent deploy operation.",
1044
870
  "allowNo": false,
1045
871
  "type": "boolean"
1046
872
  },
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
+ },
1047
919
  "wait": {
1048
920
  "char": "w",
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
- ],
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\".",
1053
922
  "name": "wait",
1054
- "summary": "Number of minutes to wait for the command to complete and display results.",
923
+ "summary": "Number of minutes to wait for command to complete and display results.",
1055
924
  "hasDynamicHelp": true,
1056
925
  "helpValue": "<minutes>",
1057
926
  "multiple": false,
@@ -1060,12 +929,12 @@
1060
929
  },
1061
930
  "hasDynamicHelp": true,
1062
931
  "hiddenAliases": [],
1063
- "id": "project:deploy:cancel",
932
+ "id": "project:deploy:report",
1064
933
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1065
934
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1066
935
  "pluginType": "core",
1067
936
  "strict": true,
1068
- "summary": "Cancel a deploy operation.",
937
+ "summary": "Check or poll for the status of a deploy operation.",
1069
938
  "enableJsonFlag": true,
1070
939
  "isESM": true,
1071
940
  "relativePath": [
@@ -1073,38 +942,35 @@
1073
942
  "commands",
1074
943
  "project",
1075
944
  "deploy",
1076
- "cancel.js"
945
+ "report.js"
1077
946
  ],
1078
947
  "aliasPermutations": [
1079
- "deploy:metadata:cancel",
1080
- "metadata:deploy:cancel",
1081
- "metadata:cancel:deploy",
1082
- "deploy:cancel:metadata",
1083
- "cancel:deploy:metadata",
1084
- "cancel:metadata:deploy"
948
+ "deploy:metadata:report",
949
+ "metadata:deploy:report",
950
+ "metadata:report:deploy",
951
+ "deploy:report:metadata",
952
+ "report:deploy:metadata",
953
+ "report:metadata:deploy"
1085
954
  ],
1086
955
  "permutations": [
1087
- "project:deploy:cancel",
1088
- "deploy:project:cancel",
1089
- "deploy:cancel:project",
1090
- "project:cancel:deploy",
1091
- "cancel:project:deploy",
1092
- "cancel:deploy:project"
956
+ "project:deploy:report",
957
+ "deploy:project:report",
958
+ "deploy:report:project",
959
+ "project:report:deploy",
960
+ "report:project:deploy",
961
+ "report:deploy:project"
1093
962
  ]
1094
963
  },
1095
- "project:deploy:preview": {
964
+ "project:deploy:resume": {
1096
965
  "aliases": [
1097
- "deploy:metadata:preview"
966
+ "deploy:metadata:resume"
1098
967
  ],
1099
968
  "args": {},
1100
969
  "deprecateAliases": true,
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.",
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.",
1102
971
  "examples": [
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"
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"
1108
974
  ],
1109
975
  "flags": {
1110
976
  "json": {
@@ -1122,114 +988,196 @@
1122
988
  "multiple": false,
1123
989
  "type": "option"
1124
990
  },
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.",
991
+ "concise": {
992
+ "exclusive": [
993
+ "verbose"
994
+ ],
995
+ "name": "concise",
996
+ "summary": "Show concise output of the deploy operation result.",
1130
997
  "allowNo": false,
1131
998
  "type": "boolean"
1132
999
  },
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.",
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.",
1142
1005
  "hasDynamicHelp": false,
1143
1006
  "multiple": false,
1144
1007
  "type": "option"
1145
1008
  },
1146
- "metadata": {
1147
- "char": "m",
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": {
1148
1018
  "exclusive": [
1149
- "manifest",
1150
- "source-dir"
1019
+ "concise"
1151
1020
  ],
1152
- "name": "metadata",
1153
- "summary": "Metadata component names to preview.",
1154
- "hasDynamicHelp": false,
1155
- "multiple": true,
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,
1156
1034
  "type": "option"
1157
1035
  },
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"
1164
- ],
1165
- "name": "source-dir",
1166
- "summary": "Path to the local source files to preview.",
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.",
1167
1041
  "hasDynamicHelp": false,
1168
1042
  "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
+ ],
1169
1056
  "type": "option"
1170
1057
  },
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,
1178
- "multiple": false,
1179
- "type": "option"
1180
- },
1181
- "concise": {
1182
- "name": "concise",
1183
- "summary": "Show only the changes that will be deployed; omits files that are forceignored.",
1058
+ "junit": {
1059
+ "helpGroup": "Test",
1060
+ "name": "junit",
1061
+ "summary": "Output JUnit test results.",
1184
1062
  "allowNo": false,
1185
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
+ }
1076
+ ],
1077
+ "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1078
+ "hasDynamicHelp": false,
1079
+ "multiple": false,
1080
+ "type": "option"
1186
1081
  }
1187
1082
  },
1188
1083
  "hasDynamicHelp": true,
1189
1084
  "hiddenAliases": [],
1190
- "id": "project:deploy:preview",
1085
+ "id": "project:deploy:resume",
1191
1086
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1192
1087
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1193
1088
  "pluginType": "core",
1194
1089
  "strict": true,
1195
- "summary": "Preview a deployment to see what will deploy to the org, the potential conflicts, and the ignored files.",
1090
+ "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1196
1091
  "enableJsonFlag": true,
1197
- "requiresProject": 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
+ },
1198
1134
  "isESM": true,
1199
1135
  "relativePath": [
1200
1136
  "lib",
1201
1137
  "commands",
1202
1138
  "project",
1203
1139
  "deploy",
1204
- "preview.js"
1140
+ "resume.js"
1205
1141
  ],
1206
1142
  "aliasPermutations": [
1207
- "deploy:metadata:preview",
1208
- "metadata:deploy:preview",
1209
- "metadata:preview:deploy",
1210
- "deploy:preview:metadata",
1211
- "preview:deploy:metadata",
1212
- "preview:metadata:deploy"
1143
+ "deploy:metadata:resume",
1144
+ "metadata:deploy:resume",
1145
+ "metadata:resume:deploy",
1146
+ "deploy:resume:metadata",
1147
+ "resume:deploy:metadata",
1148
+ "resume:metadata:deploy"
1213
1149
  ],
1214
1150
  "permutations": [
1215
- "project:deploy:preview",
1216
- "deploy:project:preview",
1217
- "deploy:preview:project",
1218
- "project:preview:deploy",
1219
- "preview:project:deploy",
1220
- "preview:deploy:project"
1151
+ "project:deploy:resume",
1152
+ "deploy:project:resume",
1153
+ "deploy:resume:project",
1154
+ "project:resume:deploy",
1155
+ "resume:project:deploy",
1156
+ "resume:deploy:project"
1221
1157
  ]
1222
1158
  },
1223
- "project:deploy:quick": {
1159
+ "project:deploy:start": {
1224
1160
  "aliases": [
1225
- "deploy:metadata:quick"
1161
+ "deploy:metadata"
1226
1162
  ],
1227
1163
  "args": {},
1228
1164
  "deprecateAliases": true,
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.",
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.",
1230
1166
  "examples": [
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"
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"
1233
1181
  ],
1234
1182
  "flags": {
1235
1183
  "json": {
@@ -1247,8 +1195,17 @@
1247
1195
  "multiple": false,
1248
1196
  "type": "option"
1249
1197
  },
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
+ },
1250
1207
  "async": {
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\".",
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\".",
1252
1209
  "exclusive": [
1253
1210
  "wait"
1254
1211
  ],
@@ -1266,186 +1223,202 @@
1266
1223
  "allowNo": false,
1267
1224
  "type": "boolean"
1268
1225
  },
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"
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"
1277
1231
  },
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"
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"
1286
1239
  },
1287
- "use-most-recent": {
1240
+ "ignore-errors": {
1288
1241
  "char": "r",
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.",
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.",
1292
1245
  "allowNo": false,
1293
1246
  "type": "boolean"
1294
1247
  },
1295
- "verbose": {
1296
- "exclusive": [
1297
- "concise"
1298
- ],
1299
- "name": "verbose",
1300
- "summary": "Show verbose output of the deploy result.",
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.",
1301
1253
  "allowNo": false,
1302
1254
  "type": "boolean"
1303
1255
  },
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\".",
1256
+ "manifest": {
1257
+ "char": "x",
1258
+ "description": "All child components are included. If you specify this flag, don’t specify --metadata or --source-dir.",
1307
1259
  "exclusive": [
1308
- "async"
1260
+ "source-dir",
1261
+ "metadata",
1262
+ "metadata-dir"
1309
1263
  ],
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>",
1264
+ "helpGroup": "Source Format",
1265
+ "name": "manifest",
1266
+ "summary": "Full file path for manifest (package.xml) of components to deploy.",
1267
+ "hasDynamicHelp": false,
1315
1268
  "multiple": false,
1316
1269
  "type": "option"
1317
1270
  },
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.",
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.",
1323
1294
  "hasDynamicHelp": false,
1324
1295
  "multiple": false,
1325
1296
  "type": "option"
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",
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.",
1412
1305
  "allowNo": false,
1413
1306
  "type": "boolean"
1414
1307
  },
1415
- "flags-dir": {
1416
- "helpGroup": "GLOBAL",
1417
- "name": "flags-dir",
1418
- "summary": "Import flag values from a directory.",
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.",
1419
1319
  "hasDynamicHelp": false,
1420
- "multiple": false,
1320
+ "multiple": true,
1421
1321
  "type": "option"
1422
1322
  },
1423
1323
  "target-org": {
1424
1324
  "char": "o",
1425
1325
  "name": "target-org",
1426
1326
  "noCacheDefault": true,
1427
- "summary": "Username or alias of the target org.",
1327
+ "required": true,
1328
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1428
1329
  "hasDynamicHelp": true,
1429
1330
  "multiple": false,
1430
1331
  "type": "option"
1431
1332
  },
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.",
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.",
1437
1349
  "hasDynamicHelp": false,
1438
1350
  "multiple": false,
1351
+ "options": [
1352
+ "NoTestRun",
1353
+ "RunSpecifiedTests",
1354
+ "RunLocalTests",
1355
+ "RunAllTestsInOrg",
1356
+ "RunRelevantTests"
1357
+ ],
1439
1358
  "type": "option"
1440
1359
  },
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.",
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
+ "type": "option"
1381
+ },
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.",
1446
1397
  "allowNo": false,
1447
1398
  "type": "boolean"
1448
1399
  },
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
+ },
1449
1422
  "coverage-formatters": {
1450
1423
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1451
1424
  "helpGroup": "Test",
@@ -1491,183 +1464,37 @@
1491
1464
  "hasDynamicHelp": false,
1492
1465
  "multiple": false,
1493
1466
  "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"
1504
1467
  }
1505
1468
  },
1506
1469
  "hasDynamicHelp": true,
1507
1470
  "hiddenAliases": [],
1508
- "id": "project:deploy:report",
1471
+ "id": "project:deploy:start",
1509
1472
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1510
1473
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1511
1474
  "pluginType": "core",
1512
1475
  "strict": true,
1513
- "summary": "Check or poll for the status of a deploy operation.",
1476
+ "summary": "Deploy metadata to an org from your local project.",
1514
1477
  "enableJsonFlag": true,
1515
- "isESM": true,
1516
- "relativePath": [
1517
- "lib",
1518
- "commands",
1519
- "project",
1520
- "deploy",
1521
- "report.js"
1522
- ],
1523
- "aliasPermutations": [
1524
- "deploy:metadata:report",
1525
- "metadata:deploy:report",
1526
- "metadata:report:deploy",
1527
- "deploy:report:metadata",
1528
- "report:deploy:metadata",
1529
- "report:metadata:deploy"
1530
- ],
1531
- "permutations": [
1532
- "project:deploy:report",
1533
- "deploy:project:report",
1534
- "deploy:report:project",
1535
- "project:report:deploy",
1536
- "report:project:deploy",
1537
- "report:deploy:project"
1538
- ]
1539
- },
1540
- "project:deploy:resume": {
1541
- "aliases": [
1542
- "deploy:metadata:resume"
1543
- ],
1544
- "args": {},
1545
- "deprecateAliases": true,
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.",
1547
- "examples": [
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"
1550
- ],
1551
- "flags": {
1552
- "json": {
1553
- "description": "Format output as json.",
1554
- "helpGroup": "GLOBAL",
1555
- "name": "json",
1556
- "allowNo": false,
1557
- "type": "boolean"
1558
- },
1559
- "flags-dir": {
1560
- "helpGroup": "GLOBAL",
1561
- "name": "flags-dir",
1562
- "summary": "Import flag values from a directory.",
1563
- "hasDynamicHelp": false,
1564
- "multiple": false,
1565
- "type": "option"
1566
- },
1567
- "concise": {
1568
- "exclusive": [
1569
- "verbose"
1570
- ],
1571
- "name": "concise",
1572
- "summary": "Show concise output of the deploy operation result.",
1573
- "allowNo": false,
1574
- "type": "boolean"
1575
- },
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.",
1581
- "hasDynamicHelp": false,
1582
- "multiple": false,
1583
- "type": "option"
1584
- },
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.",
1590
- "allowNo": false,
1591
- "type": "boolean"
1592
- },
1593
- "verbose": {
1594
- "exclusive": [
1595
- "concise"
1596
- ],
1597
- "name": "verbose",
1598
- "summary": "Show verbose output of the deploy operation result.",
1599
- "allowNo": false,
1600
- "type": "boolean"
1601
- },
1602
- "wait": {
1603
- "char": "w",
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\".",
1605
- "name": "wait",
1606
- "summary": "Number of minutes to wait for the command to complete and display results.",
1607
- "hasDynamicHelp": true,
1608
- "helpValue": "<minutes>",
1609
- "multiple": false,
1610
- "type": "option"
1611
- },
1612
- "coverage-formatters": {
1613
- "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
1614
- "helpGroup": "Test",
1615
- "name": "coverage-formatters",
1616
- "summary": "Format of the code coverage results.",
1617
- "hasDynamicHelp": false,
1618
- "multiple": true,
1619
- "options": [
1620
- "clover",
1621
- "cobertura",
1622
- "html-spa",
1623
- "html",
1624
- "json",
1625
- "json-summary",
1626
- "lcovonly",
1627
- "none",
1628
- "teamcity",
1629
- "text",
1630
- "text-summary"
1631
- ],
1632
- "type": "option"
1633
- },
1634
- "junit": {
1635
- "helpGroup": "Test",
1636
- "name": "junit",
1637
- "summary": "Output JUnit test results.",
1638
- "allowNo": false,
1639
- "type": "boolean"
1640
- },
1641
- "results-dir": {
1642
- "helpGroup": "Test",
1643
- "name": "results-dir",
1644
- "relationships": [
1645
- {
1646
- "type": "some",
1647
- "flags": [
1648
- "coverage-formatters",
1649
- "junit"
1650
- ]
1651
- }
1652
- ],
1653
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
1654
- "hasDynamicHelp": false,
1655
- "multiple": false,
1656
- "type": "option"
1657
- }
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
+ ]
1658
1490
  },
1659
- "hasDynamicHelp": true,
1660
- "hiddenAliases": [],
1661
- "id": "project:deploy:resume",
1662
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1663
- "pluginName": "@salesforce/plugin-deploy-retrieve",
1664
- "pluginType": "core",
1665
- "strict": true,
1666
- "summary": "Resume watching a deploy operation and update source tracking when the deploy completes.",
1667
- "enableJsonFlag": true,
1668
1491
  "envVariablesSection": {
1669
1492
  "header": "ENVIRONMENT VARIABLES",
1670
1493
  "body": [
1494
+ {
1495
+ "name": "SF_TARGET_ORG",
1496
+ "description": "Username or alias of your default org. Overrides the target-org configuration variable."
1497
+ },
1671
1498
  {
1672
1499
  "name": "SF_USE_PROGRESS_BAR",
1673
1500
  "description": "Set to false to disable the progress bar when running the metadata deploy command."
@@ -1713,47 +1540,34 @@
1713
1540
  "commands",
1714
1541
  "project",
1715
1542
  "deploy",
1716
- "resume.js"
1543
+ "start.js"
1717
1544
  ],
1718
1545
  "aliasPermutations": [
1719
- "deploy:metadata:resume",
1720
- "metadata:deploy:resume",
1721
- "metadata:resume:deploy",
1722
- "deploy:resume:metadata",
1723
- "resume:deploy:metadata",
1724
- "resume:metadata:deploy"
1546
+ "deploy:metadata",
1547
+ "metadata:deploy"
1725
1548
  ],
1726
1549
  "permutations": [
1727
- "project:deploy:resume",
1728
- "deploy:project:resume",
1729
- "deploy:resume:project",
1730
- "project:resume:deploy",
1731
- "resume:project:deploy",
1732
- "resume:deploy:project"
1550
+ "project:deploy:start",
1551
+ "deploy:project:start",
1552
+ "deploy:start:project",
1553
+ "project:start:deploy",
1554
+ "start:project:deploy",
1555
+ "start:deploy:project"
1733
1556
  ]
1734
1557
  },
1735
- "project:deploy:start": {
1558
+ "project:deploy:validate": {
1736
1559
  "aliases": [
1737
- "deploy:metadata"
1560
+ "deploy:metadata:validate"
1738
1561
  ],
1739
1562
  "args": {},
1740
1563
  "deprecateAliases": true,
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.",
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.",
1742
1565
  "examples": [
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"
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"
1757
1571
  ],
1758
1572
  "flags": {
1759
1573
  "json": {
@@ -1775,16 +1589,13 @@
1775
1589
  "char": "a",
1776
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.",
1777
1591
  "name": "api-version",
1778
- "summary": "Target API version for the deploy.",
1592
+ "summary": "Target API version for the validation.",
1779
1593
  "hasDynamicHelp": false,
1780
1594
  "multiple": false,
1781
1595
  "type": "option"
1782
1596
  },
1783
1597
  "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
- ],
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\".",
1788
1599
  "name": "async",
1789
1600
  "summary": "Run the command asynchronously.",
1790
1601
  "allowNo": false,
@@ -1795,75 +1606,40 @@
1795
1606
  "verbose"
1796
1607
  ],
1797
1608
  "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.",
1609
+ "summary": "Show concise output of the validation result.",
1829
1610
  "allowNo": false,
1830
1611
  "type": "boolean"
1831
1612
  },
1832
1613
  "manifest": {
1833
1614
  "char": "x",
1834
1615
  "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
1616
  "helpGroup": "Source Format",
1841
1617
  "name": "manifest",
1842
- "summary": "Full file path for manifest (package.xml) of components to deploy.",
1618
+ "summary": "Full file path for manifest (package.xml) of components to validate for deployment.",
1843
1619
  "hasDynamicHelp": false,
1844
1620
  "multiple": false,
1845
1621
  "type": "option"
1846
1622
  },
1847
1623
  "metadata": {
1848
1624
  "char": "m",
1849
- "exclusive": [
1850
- "manifest",
1851
- "source-dir",
1852
- "metadata-dir"
1853
- ],
1854
1625
  "helpGroup": "Source Format",
1855
1626
  "name": "metadata",
1856
- "summary": "Metadata component names to deploy. Wildcards (`*` ) supported as long as you use quotes, such as `ApexClass:MyClass*`.",
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.",
1857
1638
  "hasDynamicHelp": false,
1858
1639
  "multiple": true,
1859
1640
  "type": "option"
1860
1641
  },
1861
1642
  "metadata-dir": {
1862
- "exclusive": [
1863
- "manifest",
1864
- "source-dir",
1865
- "metadata"
1866
- ],
1867
1643
  "helpGroup": "Metadata API Format",
1868
1644
  "name": "metadata-dir",
1869
1645
  "summary": "Root of directory or zip file of metadata formatted files to deploy.",
@@ -1881,21 +1657,6 @@
1881
1657
  "allowNo": false,
1882
1658
  "type": "boolean"
1883
1659
  },
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
1660
  "target-org": {
1900
1661
  "char": "o",
1901
1662
  "name": "target-org",
@@ -1918,17 +1679,17 @@
1918
1679
  },
1919
1680
  "test-level": {
1920
1681
  "char": "l",
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\".",
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\".",
1922
1683
  "helpGroup": "Test",
1923
1684
  "name": "test-level",
1924
1685
  "summary": "Deployment Apex testing level.",
1686
+ "default": "RunLocalTests",
1925
1687
  "hasDynamicHelp": false,
1926
1688
  "multiple": false,
1927
1689
  "options": [
1928
- "NoTestRun",
1929
- "RunSpecifiedTests",
1930
- "RunLocalTests",
1931
1690
  "RunAllTestsInOrg",
1691
+ "RunLocalTests",
1692
+ "RunSpecifiedTests",
1932
1693
  "RunRelevantTests"
1933
1694
  ],
1934
1695
  "type": "option"
@@ -1938,63 +1699,28 @@
1938
1699
  "concise"
1939
1700
  ],
1940
1701
  "name": "verbose",
1941
- "summary": "Show verbose output of the deploy result.",
1702
+ "summary": "Show verbose output of the validation result.",
1942
1703
  "allowNo": false,
1943
1704
  "type": "boolean"
1944
1705
  },
1945
1706
  "wait": {
1946
1707
  "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"
1950
- ],
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\".",
1951
1709
  "name": "wait",
1952
- "summary": "Number of minutes to wait for command to complete and display results.",
1710
+ "summary": "Number of minutes to wait for the command to complete and display results.",
1953
1711
  "hasDynamicHelp": true,
1954
1712
  "helpValue": "<minutes>",
1955
1713
  "multiple": false,
1956
1714
  "type": "option"
1957
1715
  },
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
- }
1971
- ],
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.",
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.",
1973
1721
  "allowNo": false,
1974
1722
  "type": "boolean"
1975
1723
  },
1976
- "pre-destructive-changes": {
1977
- "dependsOn": [
1978
- "manifest"
1979
- ],
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": {
1988
- "dependsOn": [
1989
- "manifest"
1990
- ],
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"
1997
- },
1998
1724
  "coverage-formatters": {
1999
1725
  "description": "For multiple formatters, repeat the flag for each formatter.\n--coverage-formatters lcov --coverage-formatters clover",
2000
1726
  "helpGroup": "Test",
@@ -2040,16 +1766,57 @@
2040
1766
  "hasDynamicHelp": false,
2041
1767
  "multiple": false,
2042
1768
  "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"
2043
1810
  }
2044
1811
  },
2045
1812
  "hasDynamicHelp": true,
2046
1813
  "hiddenAliases": [],
2047
- "id": "project:deploy:start",
1814
+ "id": "project:deploy:validate",
2048
1815
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2049
1816
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2050
1817
  "pluginType": "core",
2051
1818
  "strict": true,
2052
- "summary": "Deploy metadata to an org from your local project.",
1819
+ "summary": "Validate a metadata deployment without actually executing it.",
2053
1820
  "enableJsonFlag": true,
2054
1821
  "configurationVariablesSection": {
2055
1822
  "header": "CONFIGURATION VARIABLES",
@@ -2116,34 +1883,37 @@
2116
1883
  "commands",
2117
1884
  "project",
2118
1885
  "deploy",
2119
- "start.js"
1886
+ "validate.js"
2120
1887
  ],
2121
1888
  "aliasPermutations": [
2122
- "deploy:metadata",
2123
- "metadata:deploy"
1889
+ "deploy:metadata:validate",
1890
+ "metadata:deploy:validate",
1891
+ "metadata:validate:deploy",
1892
+ "deploy:validate:metadata",
1893
+ "validate:deploy:metadata",
1894
+ "validate:metadata:deploy"
2124
1895
  ],
2125
1896
  "permutations": [
2126
- "project:deploy:start",
2127
- "deploy:project:start",
2128
- "deploy:start:project",
2129
- "project:start:deploy",
2130
- "start:project:deploy",
2131
- "start:deploy:project"
1897
+ "project:deploy:validate",
1898
+ "deploy:project:validate",
1899
+ "deploy:validate:project",
1900
+ "project:validate:deploy",
1901
+ "validate:project:deploy",
1902
+ "validate:deploy:project"
2132
1903
  ]
2133
1904
  },
2134
- "project:deploy:validate": {
1905
+ "project:delete:source": {
2135
1906
  "aliases": [
2136
- "deploy:metadata:validate"
1907
+ "force:source:delete"
2137
1908
  ],
2138
1909
  "args": {},
2139
1910
  "deprecateAliases": true,
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.",
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.",
2141
1912
  "examples": [
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"
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"
2147
1917
  ],
2148
1918
  "flags": {
2149
1919
  "json": {
@@ -2162,79 +1932,33 @@
2162
1932
  "type": "option"
2163
1933
  },
2164
1934
  "api-version": {
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.",
2167
- "name": "api-version",
2168
- "summary": "Target API version for the validation.",
2169
- "hasDynamicHelp": false,
2170
- "multiple": false,
2171
- "type": "option"
2172
- },
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"
1935
+ "aliases": [
1936
+ "apiversion"
2183
1937
  ],
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.",
1938
+ "deprecateAliases": true,
1939
+ "description": "Override the api version used for api requests made by this command",
1940
+ "name": "api-version",
2195
1941
  "hasDynamicHelp": false,
2196
1942
  "multiple": false,
2197
1943
  "type": "option"
2198
1944
  },
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,
2206
- "type": "option"
2207
- },
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.",
2214
- "hasDynamicHelp": false,
2215
- "multiple": true,
2216
- "type": "option"
2217
- },
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.",
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",
2222
1951
  "hasDynamicHelp": false,
2223
1952
  "multiple": false,
2224
1953
  "type": "option"
2225
1954
  },
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
1955
  "target-org": {
1956
+ "aliases": [
1957
+ "targetusername",
1958
+ "u"
1959
+ ],
2237
1960
  "char": "o",
1961
+ "deprecateAliases": true,
2238
1962
  "name": "target-org",
2239
1963
  "noCacheDefault": true,
2240
1964
  "required": true,
@@ -2243,252 +1967,171 @@
2243
1967
  "multiple": false,
2244
1968
  "type": "option"
2245
1969
  },
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.",
1970
+ "check-only": {
1971
+ "aliases": [
1972
+ "checkonly"
1973
+ ],
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.",
1979
+ "allowNo": false,
1980
+ "type": "boolean"
1981
+ },
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.",
1987
+ "hasDynamicHelp": true,
1988
+ "multiple": false,
1989
+ "type": "option"
1990
+ },
1991
+ "tests": {
1992
+ "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
+ "helpGroup": "Test",
1994
+ "name": "tests",
1995
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
2252
1996
  "hasDynamicHelp": false,
2253
1997
  "multiple": true,
2254
1998
  "type": "option"
2255
1999
  },
2256
2000
  "test-level": {
2001
+ "aliases": [
2002
+ "testlevel"
2003
+ ],
2257
2004
  "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\".",
2005
+ "deprecateAliases": true,
2006
+ "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\".",
2259
2007
  "helpGroup": "Test",
2260
2008
  "name": "test-level",
2261
2009
  "summary": "Deployment Apex testing level.",
2262
- "default": "RunLocalTests",
2263
2010
  "hasDynamicHelp": false,
2264
2011
  "multiple": false,
2265
2012
  "options": [
2266
- "RunAllTestsInOrg",
2267
- "RunLocalTests",
2013
+ "NoTestRun",
2268
2014
  "RunSpecifiedTests",
2015
+ "RunLocalTests",
2016
+ "RunAllTestsInOrg",
2269
2017
  "RunRelevantTests"
2270
2018
  ],
2271
2019
  "type": "option"
2272
2020
  },
2273
- "verbose": {
2274
- "exclusive": [
2275
- "concise"
2021
+ "no-prompt": {
2022
+ "aliases": [
2023
+ "noprompt"
2276
2024
  ],
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>",
2289
- "multiple": false,
2290
- "type": "option"
2291
- },
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.",
2025
+ "char": "r",
2026
+ "deprecateAliases": true,
2027
+ "name": "no-prompt",
2028
+ "summary": "Don't prompt for delete confirmation.",
2297
2029
  "allowNo": false,
2298
2030
  "type": "boolean"
2299
2031
  },
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.",
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": ",",
2305
2038
  "hasDynamicHelp": false,
2306
2039
  "multiple": true,
2307
- "options": [
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"
2319
- ],
2320
2040
  "type": "option"
2321
2041
  },
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
- }
2042
+ "source-dir": {
2043
+ "aliases": [
2044
+ "sourcepath"
2340
2045
  ],
2341
- "summary": "Output directory for code coverage and JUnit results; defaults to the deploy ID.",
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": ",",
2342
2052
  "hasDynamicHelp": false,
2343
- "multiple": false,
2053
+ "multiple": true,
2344
2054
  "type": "option"
2345
2055
  },
2346
- "purge-on-delete": {
2347
- "dependsOn": [
2348
- "manifest"
2056
+ "track-source": {
2057
+ "aliases": [
2058
+ "tracksource"
2349
2059
  ],
2350
- "helpGroup": "Delete",
2351
- "name": "purge-on-delete",
2352
- "relationships": [
2353
- {
2354
- "type": "some",
2355
- "flags": [
2356
- "pre-destructive-changes",
2357
- "post-destructive-changes"
2358
- ]
2359
- }
2060
+ "char": "t",
2061
+ "deprecateAliases": true,
2062
+ "exclusive": [
2063
+ "check-only"
2360
2064
  ],
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.",
2065
+ "name": "track-source",
2066
+ "summary": "If the delete succeeds, update the source tracking information.",
2362
2067
  "allowNo": false,
2363
2068
  "type": "boolean"
2364
2069
  },
2365
- "pre-destructive-changes": {
2366
- "dependsOn": [
2367
- "manifest"
2070
+ "force-overwrite": {
2071
+ "aliases": [
2072
+ "forceoverwrite"
2368
2073
  ],
2369
- "helpGroup": "Delete",
2370
- "name": "pre-destructive-changes",
2371
- "summary": "File path for a manifest (destructiveChangesPre.xml) of components to delete before the deploy",
2372
- "hasDynamicHelp": false,
2373
- "multiple": false,
2374
- "type": "option"
2375
- },
2376
- "post-destructive-changes": {
2074
+ "char": "f",
2377
2075
  "dependsOn": [
2378
- "manifest"
2076
+ "track-source"
2379
2077
  ],
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,
2385
- "type": "option"
2078
+ "deprecateAliases": true,
2079
+ "name": "force-overwrite",
2080
+ "summary": "Ignore conflict warnings and overwrite changes to the org.",
2081
+ "allowNo": false,
2082
+ "type": "boolean"
2083
+ },
2084
+ "verbose": {
2085
+ "name": "verbose",
2086
+ "summary": "Verbose output of the delete result.",
2087
+ "allowNo": false,
2088
+ "type": "boolean"
2386
2089
  }
2387
2090
  },
2388
2091
  "hasDynamicHelp": true,
2389
2092
  "hiddenAliases": [],
2390
- "id": "project:deploy:validate",
2093
+ "id": "project:delete:source",
2391
2094
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2392
2095
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2393
2096
  "pluginType": "core",
2394
2097
  "strict": true,
2395
- "summary": "Validate a metadata deployment without actually executing it.",
2098
+ "summary": "Delete source from your project and from a non-source-tracked org.",
2396
2099
  "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
- },
2100
+ "requiresProject": true,
2456
2101
  "isESM": true,
2457
2102
  "relativePath": [
2458
2103
  "lib",
2459
2104
  "commands",
2460
2105
  "project",
2461
- "deploy",
2462
- "validate.js"
2106
+ "delete",
2107
+ "source.js"
2463
2108
  ],
2464
2109
  "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"
2110
+ "force:source:delete",
2111
+ "source:force:delete",
2112
+ "source:delete:force",
2113
+ "force:delete:source",
2114
+ "delete:force:source",
2115
+ "delete:source:force"
2116
+ ],
2117
+ "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"
2479
2124
  ]
2480
2125
  },
2481
- "project:list:ignored": {
2126
+ "project:delete:tracking": {
2482
2127
  "aliases": [
2483
- "force:source:ignored:list"
2128
+ "force:source:tracking:clear"
2484
2129
  ],
2485
2130
  "args": {},
2486
2131
  "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.",
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.",
2488
2133
  "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"
2134
+ "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
2492
2135
  ],
2493
2136
  "flags": {
2494
2137
  "json": {
@@ -2506,27 +2149,62 @@
2506
2149
  "multiple": false,
2507
2150
  "type": "option"
2508
2151
  },
2509
- "source-dir": {
2152
+ "api-version": {
2510
2153
  "aliases": [
2511
- "sourcepath"
2154
+ "apiversion"
2512
2155
  ],
2513
- "char": "p",
2514
2156
  "deprecateAliases": true,
2515
- "name": "source-dir",
2516
- "summary": "File or directory of files that the command checks for foreceignored files.",
2157
+ "description": "Override the api version used for api requests made by this command",
2158
+ "name": "api-version",
2517
2159
  "hasDynamicHelp": false,
2518
2160
  "multiple": false,
2519
2161
  "type": "option"
2162
+ },
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",
2169
+ "hasDynamicHelp": false,
2170
+ "multiple": false,
2171
+ "type": "option"
2172
+ },
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,
2186
+ "type": "option"
2187
+ },
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"
2520
2198
  }
2521
2199
  },
2522
- "hasDynamicHelp": false,
2200
+ "hasDynamicHelp": true,
2523
2201
  "hiddenAliases": [],
2524
- "id": "project:list:ignored",
2202
+ "id": "project:delete:tracking",
2525
2203
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2526
2204
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2527
2205
  "pluginType": "core",
2528
2206
  "strict": true,
2529
- "summary": "Check your local project package directories for forceignored files.",
2207
+ "summary": "Delete all local source tracking information.",
2530
2208
  "enableJsonFlag": true,
2531
2209
  "requiresProject": true,
2532
2210
  "isESM": true,
@@ -2534,54 +2212,58 @@
2534
2212
  "lib",
2535
2213
  "commands",
2536
2214
  "project",
2537
- "list",
2538
- "ignored.js"
2215
+ "delete",
2216
+ "tracking.js"
2539
2217
  ],
2540
2218
  "aliasPermutations": [
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"
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"
2565
2243
  ],
2566
2244
  "permutations": [
2567
- "project:list:ignored",
2568
- "list:project:ignored",
2569
- "list:ignored:project",
2570
- "project:ignored:list",
2571
- "ignored:project:list",
2572
- "ignored:list:project"
2245
+ "project:delete:tracking",
2246
+ "delete:project:tracking",
2247
+ "delete:tracking:project",
2248
+ "project:tracking:delete",
2249
+ "tracking:project:delete",
2250
+ "tracking:delete:project"
2573
2251
  ]
2574
2252
  },
2575
- "project:reset:tracking": {
2253
+ "project:generate:manifest": {
2576
2254
  "aliases": [
2577
- "force:source:tracking:reset"
2255
+ "force:source:manifest:create"
2578
2256
  ],
2579
2257
  "args": {},
2580
2258
  "deprecateAliases": true,
2581
- "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nResets local and remote source tracking so that Salesforce CLI no longer registers differences between your local files and those in the org. When you next run 'project deploy preview', Salesforce CLI returns no results, even though conflicts might actually exist. Salesforce CLI then resumes tracking new source changes as usual.\n\nUse the --revision flag to reset source tracking to a specific revision number of an org source member. To get the revision number, query the SourceMember Tooling API object with the 'data soql' command. For example:\n\n <%= config.bin %> data query --query \"SELECT MemberName, MemberType, RevisionCounter FROM SourceMember\" --use-tooling-api --target-org my-scratch",
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.",
2582
2260
  "examples": [
2583
- "Reset source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch",
2584
- "Reset source tracking to revision number 30 for your default org:\n$ <%= config.bin %> <%= command.id %> --revision 30"
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"
2585
2267
  ],
2586
2268
  "flags": {
2587
2269
  "json": {
@@ -2599,21 +2281,6 @@
2599
2281
  "multiple": false,
2600
2282
  "type": "option"
2601
2283
  },
2602
- "target-org": {
2603
- "aliases": [
2604
- "targetusername",
2605
- "u"
2606
- ],
2607
- "char": "o",
2608
- "deprecateAliases": true,
2609
- "name": "target-org",
2610
- "noCacheDefault": true,
2611
- "required": true,
2612
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2613
- "hasDynamicHelp": true,
2614
- "multiple": false,
2615
- "type": "option"
2616
- },
2617
2284
  "api-version": {
2618
2285
  "aliases": [
2619
2286
  "apiversion"
@@ -2635,34 +2302,231 @@
2635
2302
  "multiple": false,
2636
2303
  "type": "option"
2637
2304
  },
2638
- "revision": {
2639
- "char": "r",
2640
- "name": "revision",
2641
- "summary": "SourceMember revision counter number to reset to.",
2305
+ "metadata": {
2306
+ "char": "m",
2307
+ "name": "metadata",
2308
+ "summary": "Names of metadata components to include in the manifest.",
2309
+ "delimiter": ",",
2310
+ "hasDynamicHelp": false,
2311
+ "multiple": true,
2312
+ "type": "option"
2313
+ },
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": ",",
2323
+ "hasDynamicHelp": false,
2324
+ "multiple": true,
2325
+ "type": "option"
2326
+ },
2327
+ "name": {
2328
+ "aliases": [
2329
+ "manifestname"
2330
+ ],
2331
+ "char": "n",
2332
+ "deprecateAliases": true,
2333
+ "exclusive": [
2334
+ "type"
2335
+ ],
2336
+ "name": "name",
2337
+ "summary": "Name of a custom manifest file to create.",
2338
+ "hasDynamicHelp": false,
2339
+ "multiple": false,
2340
+ "type": "option"
2341
+ },
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.",
2353
+ "hasDynamicHelp": false,
2354
+ "multiple": false,
2355
+ "options": [
2356
+ "pre",
2357
+ "post",
2358
+ "destroy",
2359
+ "package"
2360
+ ],
2361
+ "type": "option"
2362
+ },
2363
+ "include-packages": {
2364
+ "aliases": [
2365
+ "includepackages"
2366
+ ],
2367
+ "char": "c",
2368
+ "dependsOn": [
2369
+ "from-org"
2370
+ ],
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": ",",
2375
+ "hasDynamicHelp": false,
2376
+ "multiple": true,
2377
+ "options": [
2378
+ "managed",
2379
+ "unlocked"
2380
+ ],
2381
+ "type": "option"
2382
+ },
2383
+ "excluded-metadata": {
2384
+ "name": "excluded-metadata",
2385
+ "relationships": [
2386
+ {
2387
+ "type": "some",
2388
+ "flags": [
2389
+ "from-org",
2390
+ "source-dir"
2391
+ ]
2392
+ }
2393
+ ],
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": ",",
2396
+ "hasDynamicHelp": false,
2397
+ "multiple": true,
2398
+ "type": "option"
2399
+ },
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.",
2410
+ "hasDynamicHelp": false,
2411
+ "multiple": false,
2412
+ "type": "option"
2413
+ },
2414
+ "output-dir": {
2415
+ "aliases": [
2416
+ "outputdir",
2417
+ "o"
2418
+ ],
2419
+ "char": "d",
2420
+ "deprecateAliases": true,
2421
+ "name": "output-dir",
2422
+ "summary": "Directory to save the created manifest.",
2423
+ "hasDynamicHelp": false,
2424
+ "multiple": false,
2425
+ "type": "option"
2426
+ }
2427
+ },
2428
+ "hasDynamicHelp": false,
2429
+ "hiddenAliases": [],
2430
+ "id": "project:generate:manifest",
2431
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2432
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
2433
+ "pluginType": "core",
2434
+ "strict": true,
2435
+ "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
2436
+ "enableJsonFlag": true,
2437
+ "requiresProject": true,
2438
+ "isESM": true,
2439
+ "relativePath": [
2440
+ "lib",
2441
+ "commands",
2442
+ "project",
2443
+ "generate",
2444
+ "manifest.js"
2445
+ ],
2446
+ "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"
2471
+ ],
2472
+ "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"
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"
2500
+ },
2501
+ "flags-dir": {
2502
+ "helpGroup": "GLOBAL",
2503
+ "name": "flags-dir",
2504
+ "summary": "Import flag values from a directory.",
2642
2505
  "hasDynamicHelp": false,
2643
2506
  "multiple": false,
2644
2507
  "type": "option"
2645
2508
  },
2646
- "no-prompt": {
2509
+ "source-dir": {
2647
2510
  "aliases": [
2648
- "noprompt"
2511
+ "sourcepath"
2649
2512
  ],
2650
2513
  "char": "p",
2651
2514
  "deprecateAliases": true,
2652
- "name": "no-prompt",
2653
- "summary": "Don't prompt for source tracking override confirmation.",
2654
- "allowNo": false,
2655
- "type": "boolean"
2515
+ "name": "source-dir",
2516
+ "summary": "File or directory of files that the command checks for foreceignored files.",
2517
+ "hasDynamicHelp": false,
2518
+ "multiple": false,
2519
+ "type": "option"
2656
2520
  }
2657
2521
  },
2658
- "hasDynamicHelp": true,
2522
+ "hasDynamicHelp": false,
2659
2523
  "hiddenAliases": [],
2660
- "id": "project:reset:tracking",
2524
+ "id": "project:list:ignored",
2661
2525
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2662
2526
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2663
2527
  "pluginType": "core",
2664
2528
  "strict": true,
2665
- "summary": "Reset local and remote source tracking.",
2529
+ "summary": "Check your local project package directories for forceignored files.",
2666
2530
  "enableJsonFlag": true,
2667
2531
  "requiresProject": true,
2668
2532
  "isESM": true,
@@ -2670,42 +2534,42 @@
2670
2534
  "lib",
2671
2535
  "commands",
2672
2536
  "project",
2673
- "reset",
2674
- "tracking.js"
2537
+ "list",
2538
+ "ignored.js"
2675
2539
  ],
2676
2540
  "aliasPermutations": [
2677
- "force:source:tracking:reset",
2678
- "source:force:tracking:reset",
2679
- "source:tracking:force:reset",
2680
- "source:tracking:reset:force",
2681
- "force:tracking:source:reset",
2682
- "tracking:force:source:reset",
2683
- "tracking:source:force:reset",
2684
- "tracking:source:reset:force",
2685
- "force:tracking:reset:source",
2686
- "tracking:force:reset:source",
2687
- "tracking:reset:force:source",
2688
- "tracking:reset:source:force",
2689
- "force:source:reset:tracking",
2690
- "source:force:reset:tracking",
2691
- "source:reset:force:tracking",
2692
- "source:reset:tracking:force",
2693
- "force:reset:source:tracking",
2694
- "reset:force:source:tracking",
2695
- "reset:source:force:tracking",
2696
- "reset:source:tracking:force",
2697
- "force:reset:tracking:source",
2698
- "reset:force:tracking:source",
2699
- "reset:tracking:force:source",
2700
- "reset:tracking: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"
2701
2565
  ],
2702
2566
  "permutations": [
2703
- "project:reset:tracking",
2704
- "reset:project:tracking",
2705
- "reset:tracking:project",
2706
- "project:tracking:reset",
2707
- "tracking:project:reset",
2708
- "tracking:reset: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"
2709
2573
  ]
2710
2574
  },
2711
2575
  "project:retrieve:preview": {
@@ -3052,7 +2916,143 @@
3052
2916
  "start:project:retrieve",
3053
2917
  "start:retrieve:project"
3054
2918
  ]
2919
+ },
2920
+ "project:reset:tracking": {
2921
+ "aliases": [
2922
+ "force:source:tracking:reset"
2923
+ ],
2924
+ "args": {},
2925
+ "deprecateAliases": true,
2926
+ "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nResets local and remote source tracking so that Salesforce CLI no longer registers differences between your local files and those in the org. When you next run 'project deploy preview', Salesforce CLI returns no results, even though conflicts might actually exist. Salesforce CLI then resumes tracking new source changes as usual.\n\nUse the --revision flag to reset source tracking to a specific revision number of an org source member. To get the revision number, query the SourceMember Tooling API object with the 'data soql' command. For example:\n\n <%= config.bin %> data query --query \"SELECT MemberName, MemberType, RevisionCounter FROM SourceMember\" --use-tooling-api --target-org my-scratch",
2927
+ "examples": [
2928
+ "Reset source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch",
2929
+ "Reset source tracking to revision number 30 for your default org:\n$ <%= config.bin %> <%= command.id %> --revision 30"
2930
+ ],
2931
+ "flags": {
2932
+ "json": {
2933
+ "description": "Format output as json.",
2934
+ "helpGroup": "GLOBAL",
2935
+ "name": "json",
2936
+ "allowNo": false,
2937
+ "type": "boolean"
2938
+ },
2939
+ "flags-dir": {
2940
+ "helpGroup": "GLOBAL",
2941
+ "name": "flags-dir",
2942
+ "summary": "Import flag values from a directory.",
2943
+ "hasDynamicHelp": false,
2944
+ "multiple": false,
2945
+ "type": "option"
2946
+ },
2947
+ "target-org": {
2948
+ "aliases": [
2949
+ "targetusername",
2950
+ "u"
2951
+ ],
2952
+ "char": "o",
2953
+ "deprecateAliases": true,
2954
+ "name": "target-org",
2955
+ "noCacheDefault": true,
2956
+ "required": true,
2957
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2958
+ "hasDynamicHelp": true,
2959
+ "multiple": false,
2960
+ "type": "option"
2961
+ },
2962
+ "api-version": {
2963
+ "aliases": [
2964
+ "apiversion"
2965
+ ],
2966
+ "deprecateAliases": true,
2967
+ "description": "Override the api version used for api requests made by this command",
2968
+ "name": "api-version",
2969
+ "hasDynamicHelp": false,
2970
+ "multiple": false,
2971
+ "type": "option"
2972
+ },
2973
+ "loglevel": {
2974
+ "deprecated": {
2975
+ "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."
2976
+ },
2977
+ "hidden": true,
2978
+ "name": "loglevel",
2979
+ "hasDynamicHelp": false,
2980
+ "multiple": false,
2981
+ "type": "option"
2982
+ },
2983
+ "revision": {
2984
+ "char": "r",
2985
+ "name": "revision",
2986
+ "summary": "SourceMember revision counter number to reset to.",
2987
+ "hasDynamicHelp": false,
2988
+ "multiple": false,
2989
+ "type": "option"
2990
+ },
2991
+ "no-prompt": {
2992
+ "aliases": [
2993
+ "noprompt"
2994
+ ],
2995
+ "char": "p",
2996
+ "deprecateAliases": true,
2997
+ "name": "no-prompt",
2998
+ "summary": "Don't prompt for source tracking override confirmation.",
2999
+ "allowNo": false,
3000
+ "type": "boolean"
3001
+ }
3002
+ },
3003
+ "hasDynamicHelp": true,
3004
+ "hiddenAliases": [],
3005
+ "id": "project:reset:tracking",
3006
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
3007
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
3008
+ "pluginType": "core",
3009
+ "strict": true,
3010
+ "summary": "Reset local and remote source tracking.",
3011
+ "enableJsonFlag": true,
3012
+ "requiresProject": true,
3013
+ "isESM": true,
3014
+ "relativePath": [
3015
+ "lib",
3016
+ "commands",
3017
+ "project",
3018
+ "reset",
3019
+ "tracking.js"
3020
+ ],
3021
+ "aliasPermutations": [
3022
+ "force:source:tracking:reset",
3023
+ "source:force:tracking:reset",
3024
+ "source:tracking:force:reset",
3025
+ "source:tracking:reset:force",
3026
+ "force:tracking:source:reset",
3027
+ "tracking:force:source:reset",
3028
+ "tracking:source:force:reset",
3029
+ "tracking:source:reset:force",
3030
+ "force:tracking:reset:source",
3031
+ "tracking:force:reset:source",
3032
+ "tracking:reset:force:source",
3033
+ "tracking:reset:source:force",
3034
+ "force:source:reset:tracking",
3035
+ "source:force:reset:tracking",
3036
+ "source:reset:force:tracking",
3037
+ "source:reset:tracking:force",
3038
+ "force:reset:source:tracking",
3039
+ "reset:force:source:tracking",
3040
+ "reset:source:force:tracking",
3041
+ "reset:source:tracking:force",
3042
+ "force:reset:tracking:source",
3043
+ "reset:force:tracking:source",
3044
+ "reset:tracking:force:source",
3045
+ "reset:tracking:source:force"
3046
+ ],
3047
+ "permutations": [
3048
+ "project:reset:tracking",
3049
+ "reset:project:tracking",
3050
+ "reset:tracking:project",
3051
+ "project:tracking:reset",
3052
+ "tracking:project:reset",
3053
+ "tracking:reset:project"
3054
+ ]
3055
3055
  }
3056
3056
  },
3057
- "version": "3.24.58"
3057
+ "version": "3.24.59-dev.0"
3058
3058
  }